如何在C#中为嵌套的私有枚举创建属性

时间:2011-04-08 21:11:38

标签: c# enums properties

如何在类中为嵌套的私有枚举创建公共属性? 我希望能够在本课程之外使用该枚举,但不能在除此之外的所有地方使用。为什么我这样做。

我还想知道这样做是否正确,或者我是否应该使用另一个约定,比如在相同的命名空间下编写枚举,但是我将通过命名空间中的所有类来全局使用此枚举这不好。

只是为了说明一点:enum拥有不同类型的燃料 这就是为什么我不希望电动汽车知道这个枚举以及其他可以意外使用它并放在相同名称空间下的类。

3 个答案:

答案 0 :(得分:3)

你不能这样做。编译器会抱怨可访问性不一致。一个方法如何返回一个没有人知道的东西?制作enum publicinternal,否则无人可以使用。

答案 1 :(得分:0)

将枚举指定为internal,以使其对程序集中的所有类可见,但不可用于其他程序集中的对象。像这样:

internal enum MyVals
{
    val1,
    val2,
}

显而易见的警告是,您必须确保将业务逻辑拆分为单独的程序集,而不仅仅是命名空间。

答案 2 :(得分:0)

听起来像你的设计是错的。我不确定你的课程,但也许下面的设计可能对你有帮助。它也易于阅读并且有意义。

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...
}