【发布时间】:2014-06-13 22:16:13
【问题描述】:
我在基类中有一个类层次结构和一个静态方法,所以子类也有这个静态方法。我很想定义一个静态方法,比如
public static IEnumerable<T> GetList<T>()
where T : BaseClass, new()
{
return new List<T>() { ... };
}
这样我就可以打电话了
var list = ChildClass.GetList();
列表为IEnumerable<ChildClass>。但是:我不知道如何告诉编译器将泛型类型推断为我调用的类的类型,所以这种用法会产生错误,我必须将其纠正为某种冗余
var list = ChildClass.GetList<ChildClass>();
我可以使用扩展方法(它们有 this 参数,允许编译器赶上),但我想在不实例化 ChildClass 的情况下这样做。
有没有办法不重复地做到这一点?
【问题讨论】:
标签: c#