我想連載與XMLSerializer
枚舉的List<>
當我得到以下錯誤:XML序列化和列表<enum> C#
'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);
你可以發佈你用來序列化的代碼片段嗎? – 2011-04-26 19:02:08
實際上,你如何創建你傳入的XmlSerializer。 – 2011-04-26 19:08:21
雖然在不在列表中時它使用反射來生成,但它在序列化時生成使用反射 – Andrew 2011-04-26 19:09:22