XML 序列化和列表<enum> c#



当我得到以下错误时,我试图用XMLSerializer序列化枚举的List<>:

'GameDataBuilder.vshost.exe' (Managed): Loaded 'uoqssn9i'
A first chance exception of type 'System.NullReferenceException' occurred in uoqssn9i
A first chance exception of type 'System.TypeInitializationException' occurred in uoqssn9i
A first chance exception of type 'System.InvalidOperationException' occurred in System.Xml.dll
An unhandled exception of type 'System.InvalidOperationException' occurred in System.Xml.dll

我已经看了一下List<>内部,所有的值都是有效的。使用相同的代码,我可以序列化枚举(不是列表)和所有其他类型(int, float等)和其他类型的列表。似乎enum的列表会导致错误。

有人遇到过这个问题吗?

如有任何帮助,不胜感激

编辑:

序列化方法:

public void SerialiseToXML(XmlSerializer serializer, string directory)
{
    string fileName = directory + m_Name + ".xml";
    if (!Directory.Exists(directory))
    {
        DirectoryInfo di = Directory.CreateDirectory(directory);
    }
    if (!File.Exists(fileName))
    {
        using(File.Create(fileName))
        {
        }
    }
    using (TextWriter textWriter = new StreamWriter(fileName))
    {
        serializer.Serialize(textWriter, m_Objects);
    }
}

序列化器:

private void GenerateSerializer()
{
    List<Type> dynamiclyCreatedTypes = mTypeManager.GetSerializeableTypes();
    m_Serializer = new XmlSerializer(typeof(List<ISerializeable>), dynamiclyCreatedTypes.ToArray());
}

List是这样生成的:

type = typeof(List<>).MakeGenericType(type);

我认为问题是您正在使用typeof(List<ISerializeable>)来创建XmlSerializer。序列化器不能在接口上工作,你需要为它们提供一个具体的类型。

可以用这个typeof(List<EnumType>)代替吗?

相关内容

  • 没有找到相关文章

最新更新