2013-01-18 36 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