Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Activator.CreateInstance<;T>;()-有没有更有效的方法来创建对象?_C#_Asp.net_.net_Asp.net 4.5 - Fatal编程技术网

C# Activator.CreateInstance<;T>;()-有没有更有效的方法来创建对象?

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()。您正在实例化的对象必须声明一个无参数构造函数,此构造函数才能工作 如果性能是最重要的,那么我建议您避免任何反

我有很多代码片段,目前使用Activator.CreateInstance()创建基于该类型的对象。有没有更优化的方法来实现这一点?

我假设您无法使用
new
关键字,因为您正在通过通用工厂创建对象的实例

对于如何通过反射实例化对象,您的选项是有限的。除了
Activator.CreateInstance
及其派生之外,我所知道的使用泛型类型定义实例化对象的唯一方法是声明。这允许您调用
newt()
。您正在实例化的对象必须声明一个无参数构造函数,此构造函数才能工作


如果性能是最重要的,那么我建议您避免任何反射或基于泛型的对象实例化模式,并尽可能使用new关键字创建有问题对象的实例。

使用
new
实例化它们。您没有这样做的事实表明,您需要动态地创建它们,正如您已经建议的那样。你有什么问题。。。是不是太久了?你能发布相关代码吗?您可以使用工厂模式,或者使用泛型吗?如果您知道这些类型有一个默认构造函数,那么您可以使用“new()”conatstraint并使用“new T()”创建它们。否则,为每种类型保留/传递一个构造函数委托。这听起来像是设计体系结构的更高层次上的问题,因此您不可能像应该的那样容易地知道您需要什么类型的对象。