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

Extensible enum を使用して、必要に応じてアクセシビリティを制御できます。

拡張可能な列挙型

于 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 に答える