我有两个枚举器和一个采用枚举器的方法。它们被称为ABC和DEF,并且该方法被称为TestMethod(Enum myEnum)。代码如下:确定枚举类型
public enum ABC
{
Zero,
One,
Two
};
public enum DEF
{
Zero,
One,
Two
};
public void TestEnum(Enum myEnum)
{
...
}
函数TestEnum接受任何枚举器。我如何测试两个参数中的哪一个属于?我可以盲目地开始用try/catch铸造测试它,但是看起来丑陋。任何更干净的方法呢?预先感谢您的任何帮助。
耶稣乔恩,我甚至不能接受你的答案再过12分钟。在我发布之前,你是否读过我的想法并写出来?大声笑。我会尽快给你一个复选标记,谢谢你的闪电般的快速反应,以及为这样一个愚蠢的小问题编写小程序。< – Lukas
@Lukas你也可以让你的方法成为通用的。这就像这样:'public void TestEnum(TEnum myEnum)其中TEnum:struct {/ *方法体在这里* /}'。这避免了拳击。例如,您可以使用'typeof(TEnum)'来获得类型。与此问题是,C#语言目前不允许您将类型参数“TEnum”限制为...枚举。 –
@JeppeStigNielsen:我会添加该选项。 (我认为方法签名是固定的。)你可能也想看看我的Unconstrained Melody库:) https://code.google.com/p/unconstrained-melody/ –