【发布时间】:2014-11-18 10:59:13
【问题描述】:
我在C#中有以下情况:
class MyGenericClass<T>
{
public void do()
{
}
}
class SpecificFooImpl : MyGenericClass<Foo>
{
public void otherStuff()
{
}
}
现在我想编写一个只能返回MyGenericClass<T> 或特定实现的通用方法。我会写这样的:
var v1 = GetMyClass<MyGenericClass<Foo>>();
var v2 = GetMyClass<MyGenericClass<Bar>>();
var v3 = GetMyClass<SpecificFooImpl>();
我可以使用以下签名,但它对类型没有限制:
public T GetMyClass<T>();
//I don't want to write
//var v4 = GetMyClass<AnyOtherTypesWhichNotExtendMyGenericClass>();
有什么优雅的模式可以解决问题吗?
【问题讨论】:
标签: c# generics constraints