从非泛型类的泛型方法派生泛型方法

时间:2011-02-01 01:16:01

标签: c# .net generics

我有一个带有泛型方法的非泛型基类我希望通过添加一些额外的代码来扩展这个方法,而通过调用base.Method

来保持方法的其余部分保持不变

这里有一个例子

public override List<T> MyMethod<T>()
{

// do some work in here
...
// 

return base.MyMethod<T>(); // **I get an error here saying that T must be a reference type**
}

2 个答案:

答案 0 :(得分:5)

好像你的基本方法有类约束。您只需要在覆盖

上使用相同的约束
public override List<T> MyMethod<T>() where T : class

答案 1 :(得分:1)

我尝试了这个并且编译得很好:

public class Base
{
    // Base method has a 'class' constraint
    public virtual List<T> MyMethod<T>() where T : class
    {
        return new List<T>();
    }
}

public class Derived : Base
{
    // Override does not declare any constraints; constraints are inherited
    public override List<T> MyMethod<T>()
    {
        // base call works just fine
        return base.MyMethod<T>();
    }
}

您的错误不在您发布的代码中。它必须在其他地方。