Модификатор protected
имеет смысл только в контексте объявления класса - он устанавливает, что элемент, помеченный как защищенный, доступен классу и его производным классам, но не за пределами класса.
Если ваше перечисление является вложенным перечислением класса, оно может быть объявлено как защищенное.
Однако, если это перечисление верхнего уровня, оно может быть публичным или внутренним. Публичная, конечно, означает, что она видна всем как внутри, так и снаружи сборки. Внутренний означает, что он виден только в пределах сборки. Возможно, внутреннее - это то, что вы ищете.
РЕДАКТИРОВАТЬ: значения перечисления не наследуются в C # - единственная цель, позволяющая это сделать, - иметь возможность добавлять дополнительные значения в перечисление. Хотя это невозможно с перечислениями, мы можем использовать типизированный шаблон перечисления , аналогичный Java, чтобы сделать это:
public class BaseEnum
{
private readonly int m_Value;
protected BaseEnum( int val ) { m_Value = val; }
public static readonly BaseEnum First = new BaseEnum(1);
public static readonly BaseEnum Second = new BaseEnum(2);
public static readonly BaseEnum Third = new BaseEnum(3);
}
public class DerivedEnum : BaseEnum
{
protected DerivedEnum( int val ) : base( val ) { }
public static readonly DerivedEnum Fourth = new DerivedEnum(4);
public static readonly DerivedEnum Fifth = new DerivedEnum(5);
}