【发布时间】:2011-12-06 17:39:16
【问题描述】:
我认为许多 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 枚举的现有代码,但如果我确定它不会发生并且使用此类功能的所有责任都在我身上。
你怎么处理这样的功能?
【问题讨论】:
-
这有点违背枚举的目的。
标签: c# .net language-features feature-detection