2010-02-18 3 views
8

Possible Duplicates:
C# -Generic Extension Method
How do you write a C# Extension Method for a Generically Typed Classметод расширения для родового класса

Можно объявить методы расширения для общих классов?

public class NeedsExtension<T> 
{ 
    public NeedsExtension<T> DoSomething(T obj) 
    { 
     // .... 
    } 
} 
+0

http://stackoverflow.com/questions/1825952/c-generic -расширение-метод – stuartd

ответ

0

How do you write a C# Extension Method for a Generically Typed Cla сс

public static class NeedsExtension<T> 
{ 
    public static string DoSomething <T>(this MyType<T> v) 
    { return ""; } 

    // OR 
    public static void DoSomething <T>(this MyType<T> v) 
    { 
     //... 
    } 
} 
+6

этот код не будет компилироваться – Dmitry

+0

метод расширения должен быть статический метод, который не t может быть родовым типом. – W92

+0

Компилятор ошибок: метод расширения должно быть определен в необщем статическом классе – Nebula

3

Да, но вы забыли this ключевое слово. Посмотрите на Queryable, который предоставляет все операторы LINQ для коллекций.

1

Конечно

public static void SomeMethod<T>(this NeedsExtension<T> value) { 
    ... 
} 
25

Для расширения любого класса

public static class Extensions 
{ 
    public static T DoSomething<T>(this T obj) 
    { 
     //... 
    } 
} 

расширить конкретный общий класс

public static NeedExtension<T> DoSomething<T>(this NeedExtension<T> obj) 
{ 
    //... 
} 
Смежные вопросы