创建泛型类型的实例?

创建泛型类型的实例?

如果BaseFruit有一个接受一个的构造函数,int weight我可以用这样的泛型方法实例化一块水果吗?

public void AddFruit<T>()where T: BaseFruit{
    BaseFruit fruit = new T(weight); /*new Apple(150);*/
    fruit.Enlist(fruitManager);}

注释后面添加了一个示例。如果我给出BaseFruit一个无参数构造函数然后通过成员变量填充所有内容,我似乎只能这样做。在我的真实代码中(不是关于水果),这是不切实际的。

-Update-
所以它似乎无法以任何方式通过约束来解决。从答案中有三种候选解决方案:

  • 工厂模式

  • 反射

  • 活化剂

我倾向于认为反射是最不干净的,但我不能在其他两个之间做出决定。


慕的地10843
浏览 457回答 3
3回答

慕村9548890

作为user1471935建议的补充:要使用带有一个或多个参数的构造函数来实例化泛型类,现在可以使用Activator类。T&nbsp;instance&nbsp;=&nbsp;Activator.CreateInstance(typeof(T),&nbsp;new&nbsp;object[]&nbsp;{...})对象列表是您要提供的参数。根据微软的说法:CreateInstance [...]使用与指定参数最匹配的构造函数创建指定类型的实例。还有一个通用版本的CreateInstance(CreateInstance<T>()),但是它也不允许你提供构造函数参数。
打开App,查看更多内容
随时随地看视频慕课网APP