加载程序集并使用反射创建 class
Load Assembly and create class using Reflection
我找不到使用反射从给定类型和程序集定义创建 class 对象的方法。
对于我的情况,我有一个包含 class 和程序集名称的字符串,需要创建对象:
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--
我尝试过拆分和创建 class 但这不是很好的方法。
你需要做两件事:
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);
Type type = Type.GetType(str);
object objClass = Activator.CreateInstance(type);
但是,要对对象做任何有用的事情,您将必须使用通用接口/基础-class、反射或 dynamic
.
注意:如果你可以将变量键入MyClass objClass
,那么更简单的版本当然是:
MyClass objClass = new MyClass();
我找不到使用反射从给定类型和程序集定义创建 class 对象的方法。 对于我的情况,我有一个包含 class 和程序集名称的字符串,需要创建对象:
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--
我尝试过拆分和创建 class 但这不是很好的方法。
你需要做两件事:
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);
Type type = Type.GetType(str);
object objClass = Activator.CreateInstance(type);
但是,要对对象做任何有用的事情,您将必须使用通用接口/基础-class、反射或 dynamic
.
注意:如果你可以将变量键入MyClass objClass
,那么更简单的版本当然是:
MyClass objClass = new MyClass();