【发布时间】:2012-04-25 02:15:34
【问题描述】:
我有字符串输入,根据输入的值,我想调用特定对象的构造函数 (new Object1(int), new Object2(string), new Object3(int, int) 等都实现了 IObject 接口)。
而不是这样做链接 if/else 语句的明显(和缓慢)方式,我想做一些事情,比如有一个从字符串到构造函数的字典(例如 {"object1" -> new Object1 (int)})
有没有什么方法可以在 C# 中做这样的事情,也许是通过将“typeof”与构造函数结合起来?我想避免使用工厂,因为那需要并行代码结构,我想避免。
提前谢谢你
【问题讨论】:
-
你想构造对象然后立即扔掉吗?
-
使用 Type.GetConstructor() 获取 ConstructorInfo。使用它的 Invoke 方法来创建类型。或者使用 Activator.CreateInstance()。
-
你认为一些 if 语句比创建一个虚假的对象实例要慢吗?
-
@DavidSchwartz:我绝对不想把它扔掉。我不是故意的。
-
@EdS:O(1) 语句链肯定会比单个 O(1) 语句慢。无论哪种方式,我的意思是代码更慢/更脏,并且可维护性更差。
标签: c# constructor