在运行时创建嵌套类

时间:2015-05-15 11:18:51

标签: c# reflection reflection.emit

我有一个具有此结构的xml文件

<graph>
    <id>0</id>
    <name>John</name>
    <link>http://test.com</link>
</graph>
<graph>
    <id>1</id>
    <name>Roger</name>
    <link>http://test2.com</link>
</graph>

我想使用Reflection.Emit类来创建两个类 第一:

class A {
     int id;
     string name;
     string link
}

第二

Class B{
      List<A> graphs;
}

我读过这篇论文(Introduction to Creating Dynamic Types with Reflection.Emit)并且可以在运行时创建A类但问题是在另一个运行时类(B)中使用这个(A)并且还有一个A的列表。

MyClassBuilder MCB=new MyClassBuilder("A");
var myclass = MCB.CreateObject(new string[3] { "id", "name", "link" }, new Type[3] { typeof(int), typeof(string), typeof(string) });
Type TP = myclass.GetType();
MyClassBuilder MCB1=new MyClassBuilder("B");
//Here is my confusion typeof(List<TP>) ?????? Error Ocurred
var myclass2 = MCB1.CreateObject(new string[1] {"graphs"}, new Type[1]{typeof(List<TP>)});
//set value of class A and work
object tp = Activator.CreateInstance(TP);
TP.GetProperty("id").SetValue(tp,0);
TP.GetProperty("name").SetValue(tp,"Joh");
TP.GetProperty("link").SetValue(tp,"http://test.com");

//set value of class B ??????
//add tp in graphs

0 个答案:

没有答案