是否可以在RunTime C#上创建新类

时间:2011-06-03 08:01:02

标签: c# xml class reflection

您是否可以在C#中创建新类,应用程序读取来自XML并声明它们属性也是从XML读取的类。 喜欢:

<item id=1>
 <Name>John</Name>
 <Surname>Kennedy</Surname>
 <Age>24</Age>
</item>

最好成绩。

6 个答案:

答案 0 :(得分:10)

是的,它与System.Reflection.Emit命名空间有关。

但是在.net 4.0中你可以使用动态keywoard。像这样http://blogs.msdn.com/b/mcsuksoldev/archive/2010/02/04/dynamic-xml-reader-with-c-and-net-4-0.aspx

没有动态,即使你创建了新类,也需要反射来访问它们的属性

答案 1 :(得分:2)

是的。

Here你可以找到如何。

但是你也可以将这个结构存储在Map中,其中键是id,id和value是另一个存储属性的映射,其中key是名称,值是值。

答案 2 :(得分:0)

您可以在新类中反序列化此XML!尝试这样的事情:

 public static T DeserializeObject<T>(string filePath)
   {
       XmlDocument doc = new XmlDocument();
       doc.Load(filePath);
       XmlNodeReader reader = new XmlNodeReader(doc.DocumentElement);
       XmlSerializer ser = new XmlSerializer(typeof(T));
       object obj = ser.Deserialize(reader);

       return (T)obj;
   }

答案 3 :(得分:0)

你必须使用Reflection api来做那件很复杂的事情。请描述您的方案。也许有更简单的方法。

答案 4 :(得分:0)

我真的没有意义。由于C#是强类型的,因此您不会在编译类型中知道对象的外观,因此您无法使用它。

也许你最好制作一个使用Dictionary的对象,其中键是节点名。然后,您可以查询字典以查找它具有的属性。

答案 5 :(得分:0)