我有一个带有泛型方法的非泛型基类我希望通过添加一些额外的代码来扩展这个方法,而通过调用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**
}
答案 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>();
}
}
您的错误不在您发布的代码中。它必须在其他地方。