我在.Net 3.5中工作,查看Activator.CreateInstance的所有各种构造函数。我想创建一个类的实例,调用一个特定的构造函数。我没有类类型,只有它的名字。我有以下,它的工作原理,但实际上首先调用无参数构造函数,然后是我想要的那个。这不是一个非常大的问题,但无参数构造函数调用一个相当繁忙的基础构造函数,我想调用的构造函数也是。
换句话说,给定一个类型,使用参数调用CreateInstance很容易(只有下面的最后两行),但只给出一个类型名称,有没有比这更好的方法?
ObjectHandle oh = Activator.CreateInstance( "MyDllName", "MyNS." + "MyClassName" );
object o = oh.Unwrap( );
object newObj = Activator.CreateInstance( o.GetType( ), new object[] { param1 } );
return ( IMyDesiredObject )newObject;
谢谢!
答案 0 :(得分:2)
您可以使用此CreateInstance的重载。它允许您按名称(字符串)指定类型,以及构造函数参数(第6个参数)。
答案 1 :(得分:0)
我能够让这个工作的方式是
Type type = BuildManager.GetType(ServiceRef + ".SDK",false);
Object nl = Activator.CreateInstance(type);
BuildManager.GetType
需要完全限定的类名,在您的情况下,这是您传递的地方。" MyNS。" +" MyClassName"