2012-04-11 52 views
0

早上好,如何序列化的自定義事件處理

我有一類DirObserver使用自定義事件:

public EventHandler<FileDetectedEventArgs> NewFileDetected; 

我嘗試序列這個類在其他類:

private XmlSerializer serializer = new XmlSerializer(typeof(List<DirObserver>)); 

但我得到一個異常:FileDetectedEventArgs無法序列化,因爲它沒有無參數的構造函數。

但FileDetectedEventArgs級有一個參數的構造函數:

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

變化

public EventHandler<FileDetectedEventArgs> NewFileDetected; 

public event EventHandler<FileDetectedEventArgs> NewFileDetected; 
+0

幹得好,錯過了_event_關鍵字。 – Maarten 2012-04-11 09:27:18

1

事件處理不發被序列化。如果您查看異常的內部異常,您將看到它是沒有無參數構造函數的EventHandler類;它是一個代表。

您可能希望從序列化中排除事件處理程序;添加一個XmlIgnore屬性。

更新

我錯過了失蹤事件關鍵字由@Reniuz提及。序列化適用於該更正。儘管如此,序列化事件處理程序通常是一個糟糕的主意,我認爲。

+0

我需要序列化類到XML。該事件的[XmlIgnore]註釋解決了該問題 – thomas 2012-04-11 13:17:13

相關問題