0

我使用System.Reflection.Emit以下MSDN 文档创建了一个类型

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

//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."

有什么帮助吗?

4

1 回答 1

3

扩展评论:

我认为问题在于您正在创建XmlSerializerwith typeof(object)

如果您使用以下任何一种,它应该可以工作:

XmlSerializer xs = new XmlSerializer(myDynamicType);
XmlSerializer xs = new XmlSerializer(instance.GetType());
于 2013-04-05T11:37:08.563 回答