繁体   English   中英

序列化运行时创建的类型

[英]Serialize run-time created type

我已经根据MSDN doc使用System.Reflection.Emit创建了一个类型

我使用以下代码创建类型和实例:

//following the tutorial I created a method which returns a dynamic type
Type myDynamicType = CreateNewObject("MyDynamicType", fields);
var instance = Activator.CreateInstance(myDynamicType);

现在我想用XmlSerializer序列化我的对象

尝试了这个:

FileStream fs = new FileStream(@"C:\Test\SerializedDynamic.XML", FileMode.Create);            
XmlSerializer xs = new XmlSerializer(typeof(object));
xs.Serialize(fs, instance);

但是它抛出一个异常:

"The type MyDynamicType was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically."

有什么帮助吗?

扩展评论:

我认为问题在于您正在使用typeof(object)创建XmlSerializer

如果使用以下两种方法之一,则应该可以使用:

XmlSerializer xs = new XmlSerializer(myDynamicType);
XmlSerializer xs = new XmlSerializer(instance.GetType());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM