リフレクションを使用して C# プライベート メソッドを呼び出す
プライベート メソッドを動的に呼び出す場合、特にメソッド名が入力値に基づいて変更される場合には、リフレクション テクノロジの使用が必要です。 GetMethod()
デフォルトでは、メソッドはパブリック メソッドのみを取得し、プライベート メソッドを無視します。プライベート メソッドにアクセスするには、GetMethod()
関数に BindingFlags
を追加します。
では、BindingFlags.NonPublic
フラグと BindingFlags.Instance
フラグを組み合わせる必要があります。これには、現在のインスタンスのスコープ内の非パブリック (プライベート) メソッドが含まれます。
変更されたコードは次のとおりです:
MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType, BindingFlags.NonPublic | BindingFlags.Instance); dynMethod.Invoke(this, new object[] { methodParams });
このコードはプライベート メソッド「Draw_」を正常に取得し、指定されたパラメーターを使用して呼び出します。
リフレクションと BindingFlags
の詳細については、次のドキュメントを参照してください:
以上がC#の反射を使用してプライベートメソッドを呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。