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

时间:2011-04-26 18:58:17

标签: c# xml list serialization enums

当我收到以下错误时,我正尝试使用List<>序列化XMLSerializer个枚举:

'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等)和其他类型的列表就好了。它似乎只是枚举列表导致错误。

之前有人遇到过这个问题吗?

非常感谢任何帮助

修改

序列化方法:

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());
}

列表生成如下:

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

1 个答案:

答案 0 :(得分:0)

我认为问题在于您使用typeof(List<ISerializeable>)来创建XmlSerializer。序列化程序无法使用接口,您需要为它们提供具体的类型。

您可以使用此typeof(List<EnumType>)吗?

相关问题