动态创建的类型的XML反序列化

时间:2012-07-19 08:55:25

标签: c# xml dynamic types deserialization

使用.NET 3.5。我需要能够在运行时使用基于我从数据库获得的某些XML的属性生成C#类型,然后将XML反序列化为此动态创建的类型的实例。我目前能够使用Reflection.Emit生成动态类型的属性和XmlSerializer来执行反序列化到对象实例,但是,当我创建的类型包含另一个动态创建的类型(或者List另一个动态创建的类型),反序列化失败了。对于包含我生成的动态创建类型列表的动态创建类型,此行为是一致的。抛出的异常是

  

InvalidOperationException:XML Document(0,0)中存在错误。   ---> TypeInitializationException:...的类型初始值设定项引发异常。   --->的NullReferenceException。

使用的代码:

using (MemoryStream Stream = new MemoryStream(StringToByte(Xml)))
{
    // type is the dynamically created type which may contain as a property a List of another dynamically created type.
    XmlSerializer serializer = new XmlSerializer(type, RootAttribute);
    return serializer.Deserialize(Stream);                             // This line fails
}

之前有人遇到过这种特殊情况吗?有没有其他/更好的方法来做到这一点? 我无法摆脱创建动态类型,在编译时不知道任何事情。该实例用于填充网格。

非常感谢提前。

0 个答案:

没有答案