|
Extension метод для коллекций
|
|||
---|---|---|---|
#18+
Здравствуйте. Написал extension метод. Код: c# 1. 2. 3. 4. 5. 6.
вызов Код: c# 1. 2. 3. 4. 5. 6.
Почему-то не работает. "System.Data.DataColumnCollection" не содержит определения для "ToArray" и не был найден метод расширения "ToArray", принимающий тип "System.Data.DataColumnCollection" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку)Наиболее подходящий перегруженный метод для "System.Data.DataColumnCollection.AddRange(System.Data.DataColumn[])" имеет несколько недопустимых аргументов Наиболее подходящий перегруженный метод для "System.Data.DataColumnCollection.AddRange(System.Data.DataColumn[])" имеет несколько недопустимых аргументов Что не так? в гугле пишут Q: Is it possible to apply an extension method to an interface? ... A:Of course they can; most of Linq is built around interface extension methods. ... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2015, 05:38 |
|
Extension метод для коллекций
|
|||
---|---|---|---|
#18+
ой. 3я ошибка такая Аргумент "1": преобразование типа из "TSource[]" в "System.Data.DataColumn[]" невозможно ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2015, 05:40 |
|
Extension метод для коллекций
|
|||
---|---|---|---|
#18+
breee3ой. 3я ошибка такая Аргумент "1": преобразование типа из "TSource[]" в "System.Data.DataColumn[]" невозможно Переводчики такие переводчики... Постарались, чтобы даже сообщения об ошибках были ни о чем. В представленном вами коде ошибка такая: Код: plaintext
что означает, что компилятор из выражения Код: c# 1.
не может сам вывести генерик-тип Т extension-метода, и требует указать генерик-тип явно: Код: c# 1.
И в данном случае сигнатуру extension-метода вполне можно переписать так: Код: c# 1.
- это эквивалентно тому, что вы написали. Но и это не нужно, поскольку есть Enumerable.ToArray(TSource) . ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2015, 06:06 |
|
Extension метод для коллекций
|
|||
---|---|---|---|
#18+
Спасибо. Enumerable.ToArray(TSource) действительно вызывается в Код: c# 1.
Моя процедура же никак не хочет, вызываться, судя по всему, из-за того что DataColumnCollection наследуется от ICollection, а не от ICollection<T>. Не понятно зачем так сделано... Но и самое главное, это всё было пустой затеей. Поскольку DataColumn`ы нельзя вставить в другой DataTable (: ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2015, 08:03 |
|
Extension метод для коллекций
|
|||
---|---|---|---|
#18+
breee3Поскольку DataColumn`ы нельзя вставить в другой DataTable (: Если вставить так, как написано выше (все DataColumn), то см. метод DataTable.Clone . ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2015, 09:20 |
|
|
start [/forum/topic.php?fid=20&fpage=83&tid=1401467]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 343ms |
total: | 465ms |
0 / 0 |