2013-11-25 70 views
0

是否可以使用动态字符串创建一个不存在具有特定名称的类。我问这是因为我想根据一些字符串结果创建一个类。C#创建一个名称为动态字符串的类

如果可能,请分享一些例子或参考链接。

我看到,我的问题是混乱的,所以这里是更多的澄清:

假设我有一个方法/功能/过程,它返回一个字符串 - MyNewClassName()。我想创建一个名称等于MyNewClassName()的结果的类,它是动态的,也是一个自定义名称。

编辑从评论
我会用它作为某种调试的,因为我尝试远程修复一些例外,问题是,系统不提供异常信息只的类型例外。所以我的想法是创建自定义异常,并以实际异常的结果命名。

+1

为什么你需要一个动态命名的类? - 以及如何在代码中引用它? –

+1

你是指类或类的实例? –

+0

看看System.Reflection,System.CodeDom.Compiler和Microsoft.CSharp。 – Bauss

回答

2

如果你有类装配合格的全名中的字符串(从徘徊无论获得,用户可以或者输入一些东西的话),你可以做到以下几点:

var name = "MyNameSpace.MyType, MyAssembly"; 
var type = Type.GetType(name); 
var instance = Activator.CreateInstance(type); 

这是假设你指定的组件已经加载。

+0

亲爱的匿名downvoter,请留下评论,如果你不这样做,我无法改善我的帖子。 – nvoigt

+0

当然..这不会工作,除非你有组装限定名,或(类型存在于mscorlib /当前程序集)。问题并不清楚。 –

+0

仅供参考我已经回答了[这里](http://stackoverflow.com/a/20008602/2530848) –

1

您可以使用Activator.CreateInstance(type)来获取某个类型的实例。按类型名称获取类型请参见:Get Type by Name

+0

哦,伙计.. +1提到我的答案..但如果你觉得问题是重复的,投票结束..或标志..这就是要做的.. –

相关问题