C# Activator.CreateInstance<;T>;()-有没有更有效的方法来创建对象?
我有很多代码片段,目前使用Activator.CreateInstance()创建基于该类型的对象。有没有更优化的方法来实现这一点?我假设您无法使用C# Activator.CreateInstance<;T>;()-有没有更有效的方法来创建对象?,c#,asp.net,.net,asp.net-4.5,C#,Asp.net,.net,Asp.net 4.5,我有很多代码片段,目前使用Activator.CreateInstance()创建基于该类型的对象。有没有更优化的方法来实现这一点?我假设您无法使用new关键字,因为您正在通过通用工厂创建对象的实例 对于如何通过反射实例化对象,您的选项是有限的。除了Activator.CreateInstance及其派生之外,我所知道的使用泛型类型定义实例化对象的唯一方法是声明。这允许您调用newt()。您正在实例化的对象必须声明一个无参数构造函数,此构造函数才能工作 如果性能是最重要的,那么我建议您避免任何反
new
关键字,因为您正在通过通用工厂创建对象的实例
对于如何通过反射实例化对象,您的选项是有限的。除了Activator.CreateInstance
及其派生之外,我所知道的使用泛型类型定义实例化对象的唯一方法是声明。这允许您调用newt()
。您正在实例化的对象必须声明一个无参数构造函数,此构造函数才能工作
如果性能是最重要的,那么我建议您避免任何反射或基于泛型的对象实例化模式,并尽可能使用new关键字创建有问题对象的实例。使用
new
实例化它们。您没有这样做的事实表明,您需要动态地创建它们,正如您已经建议的那样。你有什么问题。。。是不是太久了?你能发布相关代码吗?您可以使用工厂模式,或者使用泛型吗?如果您知道这些类型有一个默认构造函数,那么您可以使用“new()”conatstraint并使用“new T()”创建它们。否则,为每种类型保留/传递一个构造函数委托。这听起来像是设计体系结构的更高层次上的问题,因此您不可能像应该的那样容易地知道您需要什么类型的对象。