如何在系统枚举中添加新枚举?
我想在MessageBoxButton
枚举中添加一个新的按钮类型(无= 6):
默认列表是:
MessageBoxButton.Ok=0
MessageBoxButton.Cancel=1
MessageBoxButton.AbortRetryIgnore=2
MessageBoxButton.YesNoCancel=3
MessageBoxButton.YesNo=4
MessageBoxButton.RetryCancel=5
我想添加一个新成员:
MessageBoxButton.None=6
答案 0 :(得分:1)
要实际更改枚举,您需要提交更改请求,说服人们(不同的人对.NET Core和.NET Framework进行更改)这是一个好主意,没有明显的向后兼容性问题,然后等到进行了更改并使用新的框架版本。
这显然不是一个实际的短期措施。
要在枚举上获得额外的值,您只需使用它并查找它:
public static MessageBoxButton ReturnExtendedValue()
{
return (MessageBoxButton)6;
}
public static bool IsMessageBoxButtonThePrivatelyUsedExtraValue(MessageBoxButton value)
{
return value == (MessageBoxButton)6;
}
void Main()
{
Console.WriteLine(
IsMessageBoxButtonThePrivatelyUsedExtraValue(
ReturnExtendedValue())); // Prints "True"
}
通常,enum
不会将值限制为枚举定义的值,它只是给出了一些值的含义。您可以自由地将自己的含义应用于定义范围之外的值。
但总的来说,这不是一个好主意。首先,您不知道您分配的新值将不会在未来版本的框架中使用。你可能最好分开状态,bool
返回是否有按钮按下,out MessageBoxButton
表示如果有按钮是什么。
如果您要使用超出定义范围的值,则使用负值可能(但不能保证)具有较少的向前兼容性问题。