为了账号安全,请及时绑定邮箱和手机立即绑定

创建泛型类型的实例?

创建泛型类型的实例?

慕的地10843 2019-08-26 14:02:25
创建泛型类型的实例?如果BaseFruit有一个接受一个的构造函数,int weight我可以用这样的泛型方法实例化一块水果吗?public void AddFruit<T>()where T: BaseFruit{     BaseFruit fruit = new T(weight); /*new Apple(150);*/     fruit.Enlist(fruitManager);}注释后面添加了一个示例。如果我给出BaseFruit一个无参数构造函数然后通过成员变量填充所有内容,我似乎只能这样做。在我的真实代码中(不是关于水果),这是不切实际的。-Update-所以它似乎无法以任何方式通过约束来解决。从答案中有三种候选解决方案:工厂模式反射活化剂我倾向于认为反射是最不干净的,但我不能在其他两个之间做出决定。
查看完整描述

3 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

作为user1471935建议的补充:

要使用带有一个或多个参数的构造函数来实例化泛型类,现在可以使用Activator类。

T instance = Activator.CreateInstance(typeof(T), new object[] {...})

对象列表是您要提供的参数。根据微软的说法

CreateInstance [...]使用与指定参数最匹配的构造函数创建指定类型的实例。

还有一个通用版本的CreateInstance(CreateInstance<T>()),但是它也不允许你提供构造函数参数。


查看完整回答
反对 回复 2019-08-26
  • 3 回答
  • 0 关注
  • 453 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信