日期:2014-05-18  浏览次数:21082 次

如何动态创建匿名对象或类对象中的属性? 希望反射技术用的好地高手来帮一下忙。

--如何动态添加匿名对象中的属性?
例: 
//先创建一个有Name属性的匿名对象
object obj = new { Name = "abc" };

//如果我想再往里面动态添加一个Note属性,我改如何操作?

--或者如何动态构建一个类(可以通过字符串方式)?
例:
"class AAA{ string name = "abab"; }"
//如何将这个字符串生成为一个类对象

谢谢。。。

------解决方案--------------------
C# code

            CSharpCodeProvider p = new CSharpCodeProvider();
            CompilerParameters param = new CompilerParameters(new string[] { "System.dll" });
            string s = "namespace __ns{public class AAA{ public string name{get{return \"abab\";}} }}";
            CompilerResults rel = p.CompileAssemblyFromSource(param, s);
            Type t = rel.CompiledAssembly.GetType("__ns.AAA");

            object o = t.GetConstructor(System.Type.EmptyTypes).Invoke(null);
            MessageBox.Show(t.GetProperty("name").GetValue(o, null).ToString());