Activator.CreateInstance,类型名称为字符串并包含参数

时间:2010-05-12 16:31:00

标签: c#

我在.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;

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用此CreateInstance的重载。它允许您按名称(字符串)指定类型,以及构造函数参数(第6个参数)。

答案 1 :(得分:0)

我能够让这个工作的方式是

  Type type = BuildManager.GetType(ServiceRef + ".SDK",false);

  Object nl = Activator.CreateInstance(type);

BuildManager.GetType需要完全限定的类名,在您的情况下,这是您传递的地方。" MyNS。" +" MyClassName"