Я добавлю 1 евро к обсуждению, но, вероятно, ничего нового не добавлю.
Очевидное решение - вывести Status из вложенного Enum. Большинство перечислений .NET (за исключением, возможно, некоторых в пространстве имен Windows.Forms) не являются вложенными, и это раздражает использование для разработчика, использующего ваш API, с префиксом имени класса.
Одна вещь, которая не была упомянута , это то, что перечисления флагов в соответствии с руководящими принципами MSDN должны быть множественными существительными , которые вы, вероятно, уже знаете (Status - это простое перечисление, поэтому существительные в единственном числе должны использоваться).
Государство (enum называется States) - это прилагательное, а «Status» - это имя существительное, которое английский язык, как и большая часть нашего языка, использует от латыни. Vocative - это то, что вы называете существительное для его состояния, а именительный - предмет глагола.
Другими словами, когда машина движется , это глагол - движение - это его статус. Но машина не уходит, у нее двигатель. Он также не запускается, двигатель запускается (вы, вероятно, выбрали здесь пример, так что это может быть неактуально).
public class Car
{
VehicleState _vehicleState= VehicleState.Stationary;
public VehicleState VehicleState
{
get { return _vehicleState; }
set { _vehicleState = value; DoSomething(); }
}
}
public enum VehicleState
{
Stationary, Idle, Moving
}
Государство - это такое обобщенное существительное, не лучше ли описать, к какому состоянию оно относится? Как я и делал выше
Пример типа, на мой взгляд, также относится не к типу читателя, а к его базе данных. Я бы предпочел, чтобы вы описывали продукт базы данных читателя, который не обязательно имеет отношение к типу читателя (например, тип читателя может быть только для пересылки, кэшироваться и т. Д.). Так
reader.Database = Databases.Oracle;
На самом деле этого никогда не происходит, поскольку они реализованы в виде драйверов и цепочки наследования вместо использования перечислений, поэтому строка выше не выглядит естественной.