簡體   English   中英

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

[英]XML Serialization and List<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等),而這些其他類型的列表也可以。 似乎枚舉列表會導致錯誤。

有人遇到過這個問題嗎?

任何幫助將非常感激

編輯

序列化方法:

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

我認為問題在於您正在使用typeof(List<ISerializeable>)創建XmlSerializer。 序列化程序無法使用接口,您需要為其提供具體的類型。

您可以改用此typeof(List<EnumType>)嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM