C#泛型 – 类型参数的约束

C#泛型 – 类型参数的约束,第1张

概述我正在尝试构建一个使用C#的泛型功能的工厂方法. 在这个工厂方法中,我想将它约束到一些特定的类,所有这些类都没有默认的构造函数. 这是我的例子.有人可以告诉我是否可以运行它? public class AbstractClass { //this abstract class does not have a default constructor, nor its subclasses 我正在尝试构建一个使用C#的泛型功能的工厂方法.

在这个工厂方法中,我想将它约束到一些特定的类,所有这些类都没有默认的构造函数.

这是我的例子.有人可以告诉我是否可以运行它?

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#泛型 – 类型参数的约束所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1247330.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存