2

出现这种情况时,希望某些选项可以公开使用,而其他选项只能在程序集或类中分别在内部或私下可用。

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

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

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

...

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

...

public:

   DoSomething(Read/Write/Update);
4

2 回答 2

2

您可以使用可扩展枚举并根据需要控制可访问性。

可扩展枚举

于 2012-11-14T11:34:52.090 回答
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();
}
于 2012-11-14T11:45:58.053 回答