为了说明我的问题,我写了一个简单的方法:
public static T ConvertTo<T>(...)
where T : ISomeInterface
{
// return an instance of T
}
显然这个方法可以像
一样调用ConvertTo<ISomeInterface>(...)
但就我而言,它没有意义。方法应该返回实现ISomeInterface
的类的实例。现在我抛出NotSupportedException
用于该方法无法使用的任何类型,我对此解决方案感到满意。但是如果我可以在编译时过滤出一个接口本身就会更好。
所以我的问题是:是否可以使用接口的实现约束泛型参数?
答案 0 :(得分:2)
所以我的问题是:是否可以通过接口的实现约束泛型参数?
不,没有。您找到了最合适的解决方案:class
和new()
,其中class
仅过滤掉结构等。class
和 {{1一起使用是唯一真正的解决方案,但实际上过于严格的解决方案。
您可能对代码分析器或AOP有好运,可以在编译时筛选出错误的调用。