答案 0 :(得分:4)
答案 1 :(得分:2)
答案 2 :(得分:0)
答案 3 :(得分:0)
答案 4 :(得分:0)
如果至少对于接口,可以声明一个类根据对象实现接口,那将是有帮助的。如果存在“接口”泛型类型约束,这将特别酷。然后,例如,可以执行类似(VB语法)
的操作Class Foo(Of T as Interface) Implements T via Bar ' Declares variable 'bar' of type T Sub DoSomething ' Does something End Sub End Class
然后将一个Foo(T)投射到一个T并使其表现得像一个T.也许MS的某个人可以偶然发现这个想法并将其传递出去?
我应该注意,顺便说一下,一个类似于你的ICoolInterface的漂亮模式:
public interface ISelf<T> { T Self { get;} } public interface IFoozle { ... definitions for IFoozle } public interface IFoozle<T> : ISelf<T> , IFoozle; { /* Empty except for above declarations */ } ... similarly define IWoozle and IWoozle<T> etc.
然后可以声明一个可以实现IWoozle和IFoozle的字段,并继承自BoozleBase(它既不实现),也可以通过:
IWoozle<IFoozle<BoozleBase>> myField1; or IFoozle<IWoozle<BoozleBase>> myField2;
请注意,上述两种类型可以相互转换,也可以转换为包含其他接口的类型。如果只需要将满足多个约束的变量传递给方法,则可以通过使用泛型方法更容易地获得这样的事物。不幸的是,没有办法在一个字段中存储一个未知类型的对象,以便它可以传递给具有多个约束的泛型函数。