2011-04-08 36 views
1

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

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

只是为了使其更清楚:枚举持有不同类型的燃料 这就是为什么我不想让电动车知道这个枚举和其他类可以意外地使用它,并放在相同的命名空间下。

回答

3

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

+0

谢谢,但在这种情况下,我应该把这个枚举应该放在相同的名称空间与公共/内部或作为嵌套枚举,但公共内部访问?和两个公约之间的区别是什么 – Mulder 2011-04-08 21:19:35

+0

@Mulder:你想如何使用它? 'enum'可以在你的程序集之外使用吗?而且,你的API会被其他人使用吗?如果是这样,它必须是“公共”。如果它只是在内部使用,那么确实是“内部”。至于命名空间,我喜欢将枚举放置在它们使用的名称空间中,以便组织。 – 2011-04-08 21:22:59

0

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

internal enum MyVals 
{ 
    val1, 
    val2, 
} 

明显的条件是,你必须确保你分割你的BIZ逻辑放到单独的组件,而不是命名空间。

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