Как я могу создать свойство в C # для вложенного частного перечисления - PullRequest
1 голос
/ 09 апреля 2011

Как я могу создать публичное свойство в классе для вложенного частного перечисления?Я хочу иметь возможность использовать это перечисление также за пределами этого класса, но не во всех местах за пределами, поэтому я делаю это.

Я также хотел бы знать, правильно ли так поступать илиЯ использую другое соглашение, например, написание enum в том же пространстве имен, но я позволю глобальное использование этого enum всеми классами в пространстве имен, что не очень хорошо.

Просто чтобы сделать его более понятным:enum содержит различные типы топлива. Поэтому я не хочу, чтобы электрический автомобиль знал этот enum, а также другие классы, которые могут использовать его случайно и помещаться в одно и то же пространство имен.

Ответы [ 3 ]

3 голосов
/ 09 апреля 2011

Вы не можете сделать это.Компилятор будет жаловаться на противоречивую доступность.Как метод может вернуть то, о чем никто не знает?Сделайте enum public или internal, иначе никто не сможет его использовать.

0 голосов
/ 09 апреля 2011

Похоже, ваш дизайн не так. Я не уверен в ваших занятиях, но, возможно, приведенный ниже дизайн может вам помочь. Это также легко читать и имеет смысл.

public class BaseCar
{
  //Basic functions for other cars to use
  void Drive();
  void Stop();
}

public class GasCar : BaseCar
{
  // Enum is specific to a car with gas
  public Enum FuelType ....
}

public class ElectricCar : BaseCar
{
  //No gas FueType Enum for electric car...
}
0 голосов
/ 09 апреля 2011

Укажите перечисление как internal , чтобы оно было видимым для всех классов в сборке, но не могло использоваться для объектов в других сборках.Например:

internal enum MyVals
{
    val1,
    val2,
}

Очевидное предостережение заключается в том, что вам необходимо убедиться, что вы разбили логику своего бизнеса на отдельные сборки, а не только на пространства имен.

...