C#隐藏枚举集合/ public& amp;私人选项可访问性

时间:2012-11-14 11:31:50

标签: c# .net design-patterns enums scope

出现的情况是,人们希望某些选项可以公开获得,而其他选项只能分别在集会或类别内部或私人提供。

这样做最优雅的方式是什么?

以下是完美的,但是不可能:

public enum EActions
{
    internal Shutdown,
    Read,
    Write,
    Update
}

...

public void DoSomething(EActions action, int param2, int param3)
{
    // act
}

...

public:

   DoSomething(Read/Write/Update);

2 个答案:

答案 0 :(得分:2)

您可以使用Extensible枚举并根据需要控制辅助功能。

Extensible Enum

答案 1 :(得分:1)

当您使用设计模式标记此问题时,我建议您使用抽象基类替换此枚举,并将项替换为派生类。然后在基类中为每个子类创建静态实例。

public abstract class EAction
{
    public abstract void DoYourDeal();


    internal static readonly ShutDownEAction  Shutdown = new ShutDownEAction() ; 
    public static readonly ReadEAction Read = new ReadEAction() ;
    //...
}

    public class ReadEAction : EAction {...}
    public class WriteEAction : EAction {...}
    public class UpdateEAction : EAction {...}
    internal class ShutDownEAction : EAction {...}

public void DoSomething(EAction action)
{
    action.DoYourDeal();
}