2013-01-18 72 views
2

我正在爲事件啓動一個類。 目前有兩個枚舉。將不同的枚舉組合成一個參數C#

[Flag] 
public enum Status 
{ 
    statusA, 
    statusB, 
    statusC, 
    statusD, 
} 

[Flag] 
public enum StatusType{ 
    Request, 
    Success, 
    Fail, 
    Start, 
    End 
} 

我希望能夠引發事件,行動RequestingStatusA(Status.StatusA & StatusType.Request)爲例。 這當然會給出錯誤。無論如何可以將它們即時結合起來,但將它作爲簽名使事件處理程序能夠識別它。

我應該甚至這樣做甚至? 在此先感謝。

回答

3

號不僅如此,但你將有衝突,如果你試圖映射非轉化位值 - 所以不要考慮致盲鑄造int :)

爲什麼不創建(並通過)一包含的值的新類型枚舉類型?

struct RequestStatus { 
    // implement as desired 
    public StatusType Type { get; set; } 
    public Status Status { get; set; } 
} 

Action RequestingStatusA (RequestStatus status) { 
    .. 
} 
+0

感謝您的回覆。我的目的是讓使用這個類的事件更容易實現。與Action RequestingStatusA(Status.StatusA,StatusType.Request)有什麼區別,完全跳過了這個結構。這是可以接受的,但會「阻礙」。也許我整個設計都是錯的呢? – Tyhja

+0

@Thhja它不一定更好 - 你必須決定 - 但使用聚合類型「保持」作爲一個單位的值。 (另外,在某些情況下,我發現它可以使應用程序更容易擴展到之前我沒有考慮的事情:也許還有一條消息與結果相關聯?) – 2013-01-18 06:22:47

+0

我明白了。謝謝。我認爲這將超出原始問題的範圍。我會看一看,如果我有問題,我會發布另一個。 – Tyhja