是否可以在运行时C#上创建新类



Hi是否可以在C#中创建新类,应用程序从XML读取这些类并声明它们也是从XML读取的属性。类似:

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

最好的。

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

但在.net 4.0中,你可以使用动态键盘来实现这一点。像这样http://blogs.msdn.com/b/mcsuksoldev/archive/2010/02/04/dynamic-xml-reader-with-c-and-net-4-0.aspx

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

是的。

在这里你可以找到如何。

但是,您也可以将此结构存储在Map中,其中键为,id和value为存储属性的其他映射,其中键是名称,value是值。

您可以在一个新类中反序列化此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;
   }

您必须使用反射api来完成这项工作,这是一件复杂的事情。请描述您的情景。也许还有更简单的方法。

这里有一个简单的介绍http://blog.alxandr.me/2010/10/16/an-introduction-to-system-reflection-emit-and-opcodes/

玩得开心

我真的没有意义。由于C#是强类型的,你在编译类型时不会知道对象是什么样子的,所以你将无法使用它。

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

相关内容

  • 没有找到相关文章

最新更新