如何在类中为嵌套的私有enum创建公共属性?我希望能够在这个类之外使用这个enum,但不是在所有地方,这就是我这样做的原因。
我还想知道这样做是否正确,或者我是否应该使用另一种约定,比如在同一个命名空间下编写enum,但我将启用该命名空间中的所有类全局使用该enum,这是不好的。
让它更清楚:枚举包含不同类型的燃料这就是为什么我不想让电动汽车知道这个枚举和其他类可能会意外使用它,并被放置在同一个命名空间
你不能这么做。编译器会抱怨不一致的可访问性。一个方法怎么能返回一些没人知道的东西呢?使enum
成为public
或internal
,否则没有人可以使用
听起来你的设计是错误的。我不确定你的课程,但也许下面的设计可以帮助你。它也很容易阅读和有意义。
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...
}
将枚举指定为内部的,因此它将对程序集中的所有类可见,但对其他程序集中的对象不可用。这样的:
internal enum MyVals
{
val1,
val2,
}
明显的警告是,您必须确保将业务逻辑拆分为单独的程序集,而不仅仅是名称空间。