我有两个枚举器和一个采用枚举器的方法.它们被称为ABC和DEF,该方法称为TestMethod(Enum myEnum).代码如下:
public enum ABC
{
Zero,
One,
Two
};
public enum DEF
{
Zero,
One,
Two
};
public void TestEnum(Enum myEnum)
{
...
}
Run Code Online (Sandbox Code Playgroud)
TestEnum函数接受任何枚举器.如何测试传入的参数属于哪两个?我可以盲目地开始用try/catch铸造测试它,但是这很难看.这样做更清洁的方法吗?预先感谢您的任何帮助.
如何测试传入的参数属于哪两个?
你可以打电话GetType:
Type type = myEnum.GetType();
Run Code Online (Sandbox Code Playgroud)
请注意,目前还不清楚你想用它做什么.
或者:
if (myEnum is ABC)
{
}
else if (myEnum is DEF)
{
}
Run Code Online (Sandbox Code Playgroud)
编辑:如果您能够更改方法签名,并且如果您的呼叫者知道类型,那么根据Jeppe的评论,您可以使用:
public void TestEnum<T>(T value) where T : struct
{
// Use typeof(T) here
}
Run Code Online (Sandbox Code Playgroud)
你不能限制T为具有普通C#的枚举类型...尽管有一些hacky方法可以通过后处理应用这些约束来编写代码.
| 归档时间: |
|
| 查看次数: |
203 次 |
| 最近记录: |