有没有办法获得以下函数声明?
public bool Foo<T>() where T : interface;
IE。其中 T 是接口类型(类似于where T : class, 和struct)。
where T : class
struct
目前我已经解决了:
public bool Foo<T>() where T : IBase;
其中 IBase 被定义为一个空接口,它被我的所有自定义接口继承......不理想,但它应该可以工作......为什么不能定义泛型类型必须是接口?
对于它的价值,我想要这个,因为Foo在需要接口类型的地方进行反射......我可以将它作为普通参数传入并在函数本身中进行必要的检查,但这似乎更安全(而且我假设性能更高一点,因为所有检查都是在编译时完成的)。
Foo
你能做的最接近的(除了你的基本接口方法)是“ where T : class”,意思是引用类型。没有语法来表示“任何接口”。
例如,在 WCF 中,此 (” where T : class”) 用于将客户端限制为服务合同(接口)。