创建参数类型的对象
嘿。 是否有可能有一个方法允许用户传入某种类型的参数并让该方法实例化该类型的新对象? 我想做这样的事情:(我不知道仿制药是否可行,但试了一下)
public void LoadData(T, string id, string value) where T : new() { this.Item.Add(new T() { ID=id, Val = value}); }
上述方法不起作用,但想法是用户传递他们想要实例化的对象类型,并且该方法将根据这些参数填写详细信息。 我可以传递一个Enum
参数并执行一个Switch
并根据它创建新对象,但是有更好的方法吗? 谢谢
执行此操作的唯一方法是添加一个接口,该接口还指定要设置的参数:
public interface ISettable { string ID { get; set; } string Val { get; set; } } public void LoadData(string id, string value) where T : ISettable, new() { this.Item.Add(new T { ID = id, Val = value }); }
不幸的是,我目前无法测试validation。
如果ID
和Val
属性来自公共基类或接口,则可以约束T
inheritance该类型。
例如:
public void LoadData(string id, string value) where T : IMyInterface, new()
然后,您可以在T
实例上使用IMyInterface
所有成员。
如果它们只是碰巧具有相同名称的不同类型的不相关属性,则必须使用reflection。
此外,您需要从参数列表中删除T,
更动态的类型语言可以轻松完成。 我确信它可以用C#,它只需要付出更多的努力。 Theres可能是一些反映库,可以帮助你。
为什么不在调用方法时创建对象? 你想要做的事情对我来说似乎过于复杂。