Using an interface for a generic type with parameterless constructor constraint?
我有一个泛型类,比如myCollection,它需要它的泛型类型t有一个无参数的构造函数。我有一个接口imyinterface,其中所有实现都有无参数的构造函数,但我不能将这一事实告诉编译器,因此我不能将imyinterface用作类型参数t。我应该怎么做?
1 2 3 4 5 6 7 8 9 10 11 12 | public class MyCollection<T> where T : new() { bla bla ... T t = new T(); } public interface IMyInterface { bla bla ... } ... MyCollection<IMyInterface> x; //Compile Time Error |
我知道在定义构造函数签名的接口中,几乎同样的问题被问到了?但它已经两岁了,我希望有人能建议在C 4.0中找到一个解决方案。
这不起作用,因为接口为t的
另一种处理必须能够构造泛型类型的东西但由于任何原因不能使用新约束的泛型类的方法是将工厂传递给必须创建泛型类型的新对象的方法,或者将工厂作为实现它的类提供cr方法的接口的一部分。再吃一次。例如,第一个用法可以定义一个接口ifactoryFromstring