Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Раширяющие методы 
V
    Опции темы
Uvs
Дата 18.10.2007, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 8.8.2007
Где: Челябинск

Репутация: нет
Всего: нет



Всем привет!
Хочу добавить в класс OdbcDataReader метод CopyTo(List<T>), чтоб скопировать содержимое в список любой структуры. 
Для этого создал статический класс со статическим методом:

public static class OdbcDataReaderExt<T>
{

public static void CopyTo(this OdbcDataReader dr, List<T> list)
{

   list.Add(dr.Get....());

}


}
,но компилятор ругается, что т.о. нельзя создать расширяющий метод. А без шаблона - никакого интереса нет! Как это можно сделать?

PM MAIL ICQ Skype   Вверх
Linus
Дата 18.10.2007, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 13.8.2006
Где: Украина

Репутация: 1
Всего: 4



Как ругается? Может это из-за параметра  this OdbcDataReader dr?

Это сообщение отредактировал(а) Linus - 18.10.2007, 09:31
PM MAIL ICQ   Вверх
1stain
Дата 18.10.2007, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

Репутация: 8
Всего: 40



а если так:
Код

public static void CopyTo<T>(this OdbcDataReader dr, List<T> list)
{

   list.Add(dr.Get....());

}

з.ы. чисто навскидку, ибо Orcas еще не ставил...



--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
HalkaR
Дата 18.10.2007, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: 14
Всего: 42



Uvs, .Net то у тебя 3,5?
PM MAIL   Вверх
Uvs
Дата 18.10.2007, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 8.8.2007
Где: Челябинск

Репутация: нет
Всего: нет



да. От этого сильно зависит?

Добавлено @ 10:22
Ругается вот так:
 error CS1106: Extension methods must be defined in a non-generic static class

Если убрать шаблон из названия класса, то сразу тип T в параметре функции неизвестен.

Это сообщение отредактировал(а) Uvs - 18.10.2007, 10:24
PM MAIL ICQ Skype   Вверх
1stain
Дата 18.10.2007, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

Репутация: 8
Всего: 40



Цитата(Uvs @  18.10.2007,  10:19 Найти цитируемый пост)
Если убрать шаблон из названия класса, то сразу тип T в параметре функции неизвестен.

ну так и убери из класса, а метод сделай дженериком



--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
Linus
Дата 18.10.2007, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 13.8.2006
Где: Украина

Репутация: 1
Всего: 4



Цитата(Uvs @ 18.10.2007,  10:19)
да. От этого сильно зависит?

Ааа, теперь понял  smile 
PM MAIL ICQ   Вверх
Uvs
Дата 18.10.2007, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 8.8.2007
Где: Челябинск

Репутация: нет
Всего: нет



Всем большое спасибо и конкретно "одинокому камню" smile так прошло:

  public static class OdbcDataReaderExt
  {
    public static bool CopyTo<T>(this OdbcDataReader dr, List<T> list)
    {
      try
      { ....
      }
      catch(Exception e) {
        MessageBox.Show(e.Message);
        return false;
      }
      finally {
        dr.Close();
        dr.Dispose();
      }
      return true;
    }
  }

PM MAIL ICQ Skype   Вверх
1stain
Дата 18.10.2007, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

Репутация: 8
Всего: 40



не за что  smile 

Цитата(Uvs @  18.10.2007,  10:46 Найти цитируемый пост)
 catch(Exception e)

а вот за такое, логарифмической линейкой по рукам бить надо! 
Не стоит перехватывать ВСЕ типы исключений. Юзаешь ODBC - вот и перехватывай ODBCException...


--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
Uvs
Дата 19.10.2007, 04:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 8.8.2007
Где: Челябинск

Репутация: нет
Всего: нет



хм... - возможно
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0849 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.