Я думаю, что многие разработчики на C # столкнулись с такой проблемой: в стандартной библиотеке .net и некоторых стандартных классах и их методах работы с ними есть некоторые перечисления.Но если вы хотите расширить это перечисление, добавив некоторые поля, что невозможно, но это может эффективно упростить процесс разработки и не помешает работе этих стандартных классов.Я описываю это на конкретном примере: в пространстве имен System.Diagnostics есть перечисление TraceOptions, и оно используется TraceListeners.Давайте я хочу разработать Listener с некоторыми дополнительными опциями (например, AssemblyName и т. Д.).Теперь я должен создать новый enum, содержащий все мои дополнительные опции, которые дополняют опции из enum TraceOptions.Затем добавить новое свойство ExtraTraceOptions для моего слушателя.Но что, если я могу написать что-то вроде этого:
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, но если я уверен, что этого не произойдет, и вся ответственность за использование таких функций лежитна меня.
Что вы делаете с таким будущим?