У меня есть абстрактный класс в API, который используется методами в другой сборке. Класс имеет вложенное перечисление, определенное внутри него, примерно так:
abstract public class Thing
{
public enum Status { Accepted, Denied, Pending };
abstract public Status status { get; private set; }
etc...
}
Тогда я решил, что это будет лучший дизайн, если Thing будет интерфейсом. Но я не могу этого сделать:
public interface Thing
{
enum Status { Accepted, Denied, Pending };
Status status { get; }
etc...
}
Появится сообщение об ошибке "Интерфейсы не могут объявлять типы". Однако, если я переведу определение enum за пределами интерфейса, во-первых, я буду нарушать инкапсуляцию (тип Status действительно принадлежит Thing и сам по себе не имеет смысла), и, что более важно, мне пришлось бы пойти и изменить код в многие другие сборки, которые используют это. Можете ли вы придумать какие-либо решения?