向基类c#添加方法

时间:2013-09-17 13:31:09

标签: c# class generics base-class

是否可以向List等基类添加方法?或其他人? 如果它具有MyClass类型,我真的需要将方法添加到泛型列表类。 像这样: List<MyClass>.FindCoolStuff()List<MyClass>.SetValueByName()

感谢

3 个答案:

答案 0 :(得分:8)

不,但您可以使用extension method

public static class ListExtensions
{
    public static IEnumerable<T> DoCoolStuff<T>(this List<T> collection)
    {
        // Do cool stuff
    }
}

从MSDN:在您的代码中,您使用实例方法语法调用扩展方法。

var awesomeList = new List<string>();

var awesomestuff = awesomeList.DoCoolStuff();

答案 1 :(得分:2)

虽然您无法向类中添加方法,但您可以使用扩展方法(http://msdn.microsoft.com/en-us/library/vstudio/bb383977.aspx)来表达这样做的错觉。请注意,这些方法只会出现在该类或接口的实例上,而不会出现在类型上(如静态方法)。

答案 2 :(得分:1)

如果要将其限制为仅适用于MyClass,可以使用where关键字;所以使用上面的例子

public static class ListExtensions
{
    public static IEnumerable<T> DoCoolStuff<T>(this List<T> collection) where T : MyClass
    {
        // Do cool stuff
    }
}