2010-05-12 15 views
1

我正在.net 3.5中查看Activator.CreateInstance的所有各种构造函数。我想创建一个类的实例,调用一个特定的构造函数。我没有课程类型,只有它的名字。我有以下几点,这是有效的,但实际上最先调用无参数构造函数,然后是我想要的。这不是什么大问题,但无参数构造函数调用一个相当繁忙的基构造函数,而且我想调用的构造函数也是。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

您可以使用这种CreateInstance的超负荷。它允许您通过名称(字符串)以及构造函数参数(第6个参数)来指定类型。

+1

谢谢,里德 - 我看到那个人,但我不知道如何处理ActivationAttributes和SecurityInfo。这些文档没有表明(和Binder和Culture一样)它们可能是空的,但事实证明它们可以。适合我! – 2010-05-12 16:59:48

0

我能得到这个工作的方式是

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

    Object nl = Activator.CreateInstance(type); 

BuildManager.GetType需要完全合格的类名,你的情况这是你会通过“myns名字。” +“MyClassName”

相关问题