我认为许多 C# 开发人员都遇到了这样的问题:标准 .net 库中存在一些枚举以及许多标准类及其使用方法。但是如果你想通过添加一些不可能的字段来扩展这个枚举,但是它可以有效地简化开发过程并且不会干扰那些标准类的工作。我通过具体的例子来描述它: System.Diagnostics 命名空间中有一个枚举 TraceOptions,它被 TraceListeners 使用。让我们想用一些额外的选项(如 AssemblyName 等)来设计 Listener。现在我必须创建一个新的枚举,其中包含我所有的额外选项,这些选项补充了 TraceOptions 枚举中的选项。然后将新属性 ExtraTraceOptions 添加到我的 Listener。但是如果我可以写这样的东西怎么办:
enum MyExtraEnum : TraceOptions
{
AssemblyName = 128
}
MyExtraEnum 将通过新字段扩展 TraceOptions,这些字段不得与 TraceOptions 的字段相交,也不能与名称相交,也不能与值相交。然后我可以将 TraceOptions 与新字段一起使用,例如:
TraceOptions t = TraceOptions.AssemblyName; (IntelliSense may display that this
field is extended field from MyExtraEnum enumeration)
我知道这可能会破坏使用 TraceOptions 枚举的现有代码,但如果我确定它不会发生并且使用这些功能的所有责任都在我身上。
你对这样的功能怎么办?