我想在一个泛型方法中创建一个指定类型的实例。该类型有多个重载构造函数。我想能够向构造函数传递参数,但是
Activator.CreateInstance<T>()
似乎没有这个选项。
还有其他方法可以做到吗?
我想在一个泛型方法中创建一个指定类型的实例。该类型有多个重载构造函数。我想能够向构造函数传递参数,但是
Activator.CreateInstance<T>()
似乎没有这个选项。
还有其他方法可以做到吗?
(T)Activator.CreateInstance(typeof(T), param1, param2);
CreateInstance
。这将允许您拥有0个或多个参数。public T CreateInstance<T>(params object[] paramArray)
{
return (T)Activator.CreateInstance(typeof(T), args:paramArray);
}
https://devblogs.microsoft.com/dotnet/performance_improvements_in_net_7/
感谢@balrob在评论中的提醒。Activator.CreateInstance
调用参数化构造函数所需的时间为0.0035毫秒(或3.5微秒)- 根据你的应用程序,这甚至可能不会在性能测试中产生明显影响。 - Daipublic class AssemblyLoader<T> where T:class
{
public void(){
var res = Load(@"C:\test\paquete.uno.dos.test.dll", "paquete.uno.dos.clasetest.dll")
}
public T Load(string assemblyFile, string objectToInstantiate)
{
var loaded = Activator.CreateInstanceFrom(assemblyFile, objectToInstantiate).Unwrap();
return loaded as T;
}
}