【发布时间】:2011-11-02 14:02:57
【问题描述】:
我有一个如下所示的类层次结构:
class Base<TElement>
{
public TElement Element { get; set; }
}
class Concrete : Base<string>
{
}
我想写一个接受Base子类的方法:
public TConcrete DoSomething<TConcrete, TElement>()
where TConcrete : Base<TElement>
{
}
有什么方法可以定义DoSomething,而不必定义TElement?
理想的解决方案是编译器可以自动识别TElement,因此调用代码如下所示:
var item = DoSomething<Concrete>();
我使用的是 C# 4.0。
【问题讨论】:
-
TConcrete和TElement类型与返回或参数类型无关? -
TConcrete 是返回类型,我已经编辑了我的问题
-
看起来您正试图在 c# 中使用类似 higher-kinded types 的内容,但该语言不支持该语言
标签: c# generics inheritance c#-4.0 type-inference