使用Reflection加载Assembly并创建类

时间:2016-10-18 08:56:49

标签: c# .net reflection .net-assembly

我找不到使用反射从给定类型和程序集定义创建类对象的方法。 对于我的情况,我有一个包含类和程序集名称的字符串,需要创建对象:

string str = "My.Assembly.Namesapce.MyClass, My.Assembly.Namesapce, Version=4.0.0.0, Culture=neutral, PublicKeyToken=84474dc3c6524430";
var objClass = --SOME CODE TO USE  STR AND CREATE MyClass--

我试图拆分并创建类,但这不是很好的方法。

2 个答案:

答案 0 :(得分:2)

Type type = Type.GetType(str);
object objClass = Activator.CreateInstance(type);

但是,要对对象执行任何有用的操作,您必须使用公共接口/基类,反射或dynamic

注意:如果您可以将变量键入MyClass objClass,那么更简单的版本当然是:

MyClass objClass = new MyClass();

答案 1 :(得分:1)

你需要做两件事:

1)将字符串str转换为类型,然后 2)创建该类型的实例。

string typeString = "My.Assembly.Namesapce.MyClass, My.Assembly.Namesapce, Version=4.0.0.0, Culture=neutral, PublicKeyToken=84474dc3c6524430";

// Get a reference to the type.
Type theType = Type.GetType(typeString, true, false);

// Create an instance of that type.
MyClass  theInstance = (MyClass)Activator.CreateInstance(theType);