
在这个工厂方法中,我想将它约束到一些特定的类,所有这些类都没有默认的构造函数.
这是我的例子.有人可以告诉我是否可以运行它?
public class AbstractClass { //this abstract class does not have a default constructor,nor its subclasses public AbstractClass(SomeClassname obj) { //use obj for initialization }}//this factory class should create objects of type T that inherit //from AbstractClass and invoke the non-default constructorpublic class FactoryClass { public static T Buildobject<T> (SomeClassname obj) where T: AbstractClass { return new T(obj); //does not work?!?!?! }}//Edit: ANSWER!!!public static T Buildobject<T>(SomeClassUsedForTheConstructor item) where T : SomeAbstractClass { return (T) Activator.CreateInstance(typeof (T),item); }解决方法 查看 Type类和GetConstructor.获得ConstructorInfo对象后,使用Invoke方法. var x = typeof(T);var t = x.GetConstructor(new[] {obj.GetType()});object u = t.Invoke(<inputs>); 总结 以上是内存溢出为你收集整理的C#泛型 – 类型参数的约束全部内容,希望文章能够帮你解决C#泛型 – 类型参数的约束所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)