我正在为应用程序编写一个插件DLL。该应用程序加载插件通过组件:从父应用程序动态加载的程序集调用XMLSerializer时保存/加载失败吗?
assembly = Assembly.Load(System.IO.File.ReadAllBytes(filename));
的问题表现时,我试图序列化/反序列化plublic类。我把它缩小到序列号:
public BindingList<MyClass> MyClasses
{ get; set; }
如果我评论一下,没问题。如果我试图用序列:
public static void SaveSettingsFile()
{
try
{
XmlSerializer ser = new XmlSerializer(typeof(GameTimeSettings));
TextWriter writer = new StreamWriter(SettingPath);
ser.Serialize(writer, Settings.Instance);
writer.Close();
}
catch (Exception e)
{
Logger.ReportException("SaveSettingsFile", e);
Logger.ReportException("SaveSettingsFile->InnerException", e.InnerException);
}
}
抛出异常的ser.Serialize(作家,Settings.Instance):
System.InvalidOperationException Msg=There is an error in XML document (0,, 0). ->
InnerException: Object reference not set to an instance of an object.
我班有一个默认的,空的构造。我曾尝试使用sgen。在我写的一个简单的测试平台应用程序中,序列化工作正常......只有当程序集动态加载时才会出错。
此外,来自这两个线程,
http://forums.gbpvr.com/showthread.php?30384-XMLSerializer-Problems-with-Plugins,http://forums.gbpvr.com/showthread.php?32197-System.XML-Deserialization
我知道我可以改变从的BindingList类型ArrayList和它的工作;然而,我想保持数据绑定的工作,因为有相当多的设置需要管理。
任何输入,将不胜感激。
你有没有初始化MyClasses?如果不是,那么它的值是'null'。 – 2010-07-01 19:45:32
我会初始化这个类。就像我说的,“在我写的一个简单的测试平台应用程序中,序列化工作正常......” – 2010-07-02 12:54:20