2011-02-01 165 views
2

我有一个泛型方法的非泛型基类我想通过添加一些额外的代码来扩展此方法,而通过调用基类保持该方法的其余部分保持不变。方法从非泛型类的泛型方法派生泛型方法

这里的例子

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

您可能想要将语言指定为标记;看起来像C#,但我不积极。 – Pointy 2011-02-01 01:17:32

+0

@pointy由于“override”关键字存在,我添加了c#标记... – 2011-02-01 01:18:19

+0

这是C#.net抱歉,你们很快。 – Ivan 2011-02-01 01:19:15

回答

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>(); 
    } 
} 

你的错误并不在你发布的代码。它一定在别的地方。

5

好像你对你的基础方法的类约束。你只需要对覆盖