渡された型に応じて、メソッドへのアクセスを制限したいと思います。私の特定の状況では、もしあなたがそうするなら、私はUDP「マネージャ」を開発しています。動的メソッドのアクセス修飾子
私はUDPManager
を別のものに使用します。たとえば、クライアントとサーバー間の通信に1 UDPManager
、サーバーと別のサーバー間の通信を処理する別のサーバーUDPManager
があります。
enum
のタイプを指定してUDPManager
と定義しました。したがって、たとえば、ManagerType.A = 1
と... ManagerType.B = 2
はUDPManager
はUDPManager
の種類与えに加入することができ、これらのイベントが関連していない場合、私は彼らが利用可能たくない特定のイベントを、持っています。
がクラスの一例である
public class Something
{
public int SomethingsType { get; set; }
public void A() { }
public void B() { }
}
SomethingsType == MessageType.A
場合、MessageType.B
は(それがプライベートでIE)利用できないように、どのように私はそれを行うことができますか?さらに明確にするために
、私が入力した場合:
Something something = new Something();
someting.SomethingsType = 1
私はsomething.B()
が利用可能になりたくありません。
UPDATE
私はruntime
を言及をお詫び申し上げます。つまり、SomethingsType
がA
の場合、上記の方法(B
)を使用したくないということです。
非公開であっても、常にリフレクトでメソッドを呼び出すことができます。 – Steve
そのことはコンパイラによって強制されます。実行時に無意味です。あなたの考えでは、「利用できません(つまり、それはプライベートです)」とは実行時に*を意味しますか?コンパイラが 'something.B()'を呼び出すコードをコンパイルすると(ソースファイルには公開されているため)、突然メソッドがプライベートになると、何が起こると思いますか? –
'SomethingA'、' SomethingB'などを実装します。次に、 'ManagerType'を指定してファクトリメソッドを使います。 – mxmissile