早上好,
我有一个带有自定义事件的DirObserver类:
public EventHandler<FileDetectedEventArgs> NewFileDetected;
我尝试使用以下命令在其他类中序列化此类:
private XmlSerializer serializer = new XmlSerializer(typeof(List<DirObserver>));
但我得到一个例外: FileDetectedEventArgs无法序列化,因为它没有无参数构造函数。
但FileDetectedEventArgs-Class有一个无参数构造函数:
public class FileDetectedEventArgs : EventArgs
{
public String Source { get; set; }
public String Destination { get; set; }
public String FullName { get; set; }
public FileDetectedEventArgs(String source, String destination, String fullName)
{
this.Source = source;
this.Destination = destination;
this.FullName = fullName;
}
public FileDetectedEventArgs() { }
}
然而,会引发例外。问题是什么?
谢谢和问候 托马斯
答案 0 :(得分:1)
不会将事件处理程序序列化。如果查看异常的内部异常,您将看到它是没有无参数构造函数的EventHandler类;它是代表。
您可能希望从序列化中排除事件处理程序;添加XmlIgnore属性。
更新
我错过了@Reniuz提到的缺少的事件关键字。序列化适用于该更正。不过,我认为序列化事件处理程序一般都是个坏主意。
答案 1 :(得分:0)
更改
public EventHandler<FileDetectedEventArgs> NewFileDetected;
到
public event EventHandler<FileDetectedEventArgs> NewFileDetected;