メインコンテンツまでスキップ

リフレクション

あなたが示したコードは、リフレクションを使用して動的にクラスをインスタンス化し、そのメソッドを実行する手法を示しています。リフレクションは、C#や他のプログラミング言語で、オブジェクトの型、メソッド、プロパティ、フィールドなどの情報を動的に取得したり、操作したりするための機能です。

リフレクション (Reflection)

  • 概要: リフレクションは、実行時に型情報を調べたり、インスタンスを作成したり、メソッドを呼び出したりする能力を提供します。これは、柔軟なプログラムを作成するために非常に有用です。

  • 特徴:

    • 型情報の取得
    • メソッドの動的呼び出し
    • プロパティやフィールドへのアクセス
    • アセンブリ情報の取得
  • 使用シーン:

    • プラグインシステムやスクリプトエンジン
    • ツールやエディタ拡張
    • DI (Dependency Injection) コンテナ

コード解説

あなたのコードは、以下のような処理を行っています。

  1. クラス名の生成: Class1, Class2 などのクラス名を生成します。
  2. 型の取得: Type.GetTypeを使ってクラスの型を取得します。
  3. インスタンスの作成: Activator.CreateInstanceを使って、取得した型のインスタンスを作成します。
  4. インターフェースのキャスト: 作成したインスタンスを指定されたインターフェースにキャストします。
  5. メソッドの呼び出し:
    • instance.MyFunction()を使ってインターフェースからメソッドを呼び出します。
    • MethodInfo.Invokeを使って、動的に取得したメソッドを呼び出します。

この手法は、特にプラグインシステムやコンフィギュラブルなアプリケーションで役立ちます。例えば、ユーザーが定義したクラスやスクリプトを読み込んで、それを実行するシステムなどで使われます。

他の関連用語

  • ダイナミックディスパッチ: 動的にメソッドを決定すること。リフレクションを使って、実行時に適切なメソッドを呼び出します。
  • 動的型付け: リフレクションを通じて、実行時に型情報をもとに操作を行います。
  • ファクトリーパターン: リフレクションを使ってインスタンスを生成する方法。クラスを知っている必要がなく、抽象化されたインスタンス生成が可能です。

このように、リフレクションは強力ですが、パフォーマンスに影響を与えることがあるため、使用は必要な場合に限るのが良いでしょう。