【发布时间】:2011-04-26 18:58:16
【问题描述】:
当我收到以下 错误:
'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);
【问题讨论】:
-
你能把你用来序列化的sn-p贴出来吗?
-
其实你传入的XmlSerializer是怎么创建的。
-
有问题的枚举是在运行时使用反射生成的,尽管它不在列表中时可以很好地序列化
-
ISerializable 接口与 XML 序列化没有任何关系,因此序列化 ISerializable 对象列表没有意义...
-
请将“GenerateSerializer”方法添加到您的问题中。
标签: c# xml list serialization enums