如何将parameter passing给Activator.CreateInstance <T>()

我想创build一个我在一个generics方法中指定的types的实例。 这种types有一些重载的构造函数。 我想能够传递参数给构造函数,但是

Activator.CreateInstance<T>() 

没有看到有这个作为一个选项。

还有另一种方法吗?

是。

 (T)Activator.CreateInstance(typeof(T), param1, param2); 

作为Activator.CreateInstance的替代方法,链接的url中的FastObjectFactory比Activator更好地执行(从.NET 4.0开始,比.NET 3.5更好,.NET 4.5没有testing/统计)。 请参阅StackOverflow发布统计信息和代码:

如何通过Activator.CreateInstance中的ctor参数或使用IL?

还有另一种方法可以通过命名参数将parameter passing给CreateInstance。

基于此,您可以将数组传递给CreateInstance 。 这将允许你有0或多个参数。

 public void CreateInstance<T>(params object[] paramArray) { (T)Activator.CreateInstance(typeof(T), args:paramArray); }