您可以使用反射 http://msdn.microsoft.com/en-us/library/ms173183%28v=vs.80%29.aspx为了那个原因:
Type type = typeof(Person);
var properties = type.GetProperties(); // public properties
var methods = type.GetMethods(); // public methods
var name = type.Name;
UPDATE第一步是编译你的类
sring source = textbox.Text;
CompilerParameters parameters = new CompilerParameters() {
GenerateExecutable = false,
GenerateInMemory = true
};
var provider = new CSharpCodeProvider();
CompilerResults results = provider.CompileAssemblyFromSource(parameters, source);
接下来,您应该验证您的文本是否是有效的 C# 代码。实际上您的代码无效 - 方法 DoSomething 标记为 void,但它返回一个字符串。
if (results.Errors.HasErrors)
{
foreach(var error in results.Errors)
MessageBox.Show(error.ToString());
return;
}
到目前为止,一切都很好。现在从编译的内存中程序集中获取类型:
var assembly = results.CompiledAssembly;
var types = assembly.GetTypes();
在你的情况下只会有Person
类型。但无论如何 - 现在你可以使用反射 http://msdn.microsoft.com/en-us/library/ms173183%28v=vs.80%29.aspx从这些类型获取属性、方法等:
foreach(Type type in types)
{
var name = type.Name;
var properties = type.GetProperties();
}