泛型方法:使用参数实例化泛型类型我有一个采用类型T的泛型方法,我需要能够调用采用XmlNode的构造函数。目前,我正在尝试通过一个带有我想要的构造函数的抽象基类(加上一个无参数基类,这样我就不必编辑“子类”而不是添加实际的子类)并通过它来做到这一点边界。如果我尝试实例化其中一个类,它会抱怨:Cannotcreateaninstanceofthevariabletype'T'becauseitdoesnothavethenew()constraintIfIaddthenew()constraintIget:'T':在创建变量类型的实例时无法提供参数我该如何做我想做的事?无法指定泛型类型参数T应具有带指定参数的构造函数。基类有一个带有一些参数的构造函数这一事实并没有帮助,因为重写类不必具有相同的构造函数(例如,它可以调用基类构造函数并将一些值作为参数)。new()约束可用于只需要一个无参数的构造函数。我可能建议添加一个接口约束(例如IConstructFromXml),它有一个方法来初始化对象——然后你可以在使用无参数构造函数创建对象后调用它。或者,您可以使用表示工厂的类型参数来创建指定类型的值。然后您将创建一个工厂实例并使用它来创建所需类型的值。类似于:voidFoo()whereTFactory:IFactorywhereTFactory:new(){varfactory=newTFactory();Tval=factory.Create(xmlNode);//Create方法在IFactory中定义//...}IFactory接口如下所示:interfaceIFactory{TCreate(XmlNodenode);调用Foo方法在这个版本中有点复杂,因为你必须显式指定工厂(你也需要实现它),但它可能更接近你我想要的......以上是C#学习教程:通用方法:使用参数实例化泛型类型共享的所有内容。不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
