【发布时间】:2013-10-08 11:06:57
【问题描述】:
我试图反序列化我的 XML 以获得一个动态创建的类型的数组(使用 codedom),然后我使用反射来加载该程序集并加载动态创建的类型。当我尝试反序列化我的 XML(它有一个动态生成类型的对象集合)时,我不确定如何将类型提供给序列化程序。
我的代码示例:
Assembly assembly = Assembly.LoadFile("myDynamicassembly.dll");
Type type = assembly.GetType("myDynamicType");
string xmlstring = myXml.OuterXml.ToString();
byte[] buffer = ASCIIEncoding.UTF8.GetBytes(xmlstring);
MemoryStream ms = new MemoryStream(buffer);
XmlReader reader = new XmlTextReader(ms);
myDynamicType[] EQs;
XmlSerializer serializer = new XmlSerializer(typeof(myDynamicType[]));
EQs = (myDynamicType[])(serializer.Deserialize(reader));
所以,这里的问题是我在编写代码时不知道“myDynamicType”。它将在运行时创建和编译。
请帮忙。
【问题讨论】:
-
您知道编译时的类型,还是您正在加载完全未知的程序集?你打算如何使用这些对象?
-
不,我不知道编译时的类型。实际上,它将在运行时生成并编译为程序集。因此,您可以说我的程序集以及我的“myDynamicType”在编译时都是完全未知的。就进一步的使用而言,我将把这个数组传递给我的 Web 服务,该服务将对这个集合执行一些操作。
标签: c# xml serialization