我有一个像这样的部分
<mySection type="Namespace.MyClass, AssemblyName" />
在我的代码中我需要创建一个MyClass实例,所以我做的是这样的:
string type = GetMySectionType(); // "Namespace.MyClass, AssemblyName"
var typeParts = type.Split(',');
var className = typeParts[0].Trim();
var assemblyName = typeParts[1].Trim();
var assembly = Assembly.Load(assemblyName);
var myObj = (MyClass)assembly.CreateInstance(className);
我确定有更好的方法可以做到这一点,没有字符串拆分,但我没有在谷歌找到任何关于它。
编辑: 是否有一些构建来自框架的东西,它的类型为“Type”而没有做任何事情?
答案 0 :(得分:1)
您可以使用GetType(字符串typename)方法。例如:
string type = GetMySectionType(); // "Namespace.MyClass, AssemblyName"
Type myType = Type.GetType(type);
var myObj = (MyClass)Activator.CreateInstance(myType);
请参阅this page了解详情。