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的对象,其中键是节点名。然后,您可以查询字典以查找它具有哪些属性。