リフレクションを使用して文字列から C# クラス参照を取得する
C# リフレクションは、ランタイム型情報に動的にアクセスして操作するための強力なメカニズムを提供します。 これには、文字列表現のみを使用してクラス参照を取得することが含まれます。
プロセス:
このタスクの中心となるメソッドは Type.GetType()
です。このメソッドは、完全修飾型名を含む文字列を受け入れ、その型を表す Type
オブジェクトを返します。
例:
FooClass
という名前のクラスがあるとします。 Type
オブジェクトを取得するには:
<code class="language-csharp">string className = "FooClass"; Type type = Type.GetType(className);</code>
FooClass
内の静的メソッド (例: MyMethod
) にアクセスするには、GetMethod()
:
<code class="language-csharp">MethodInfo method = type.GetMethod("MyMethod", BindingFlags.Static | BindingFlags.Public);</code>
最後に、Invoke()
を使用してメソッドを呼び出します:
<code class="language-csharp">method.Invoke(null, null); // null for static methods, null for no parameters</code>
null
は静的メソッドの最初の引数として使用され (インスタンスは必要ありません)、2 番目の引数はパラメーターの配列 (メソッドがパラメーターを取らない場合は null) であることに注意してください。
外部アセンブリの処理:
上記の例は、FooClass
が同じアセンブリ内に存在することを前提としています。異なるアセンブリにある型の場合は、完全修飾型名の一部としてアセンブリの名前を指定する必要があります。 正確な形式はアセンブリの場所によって異なります。 Type.GetType()
メソッド内でのアセンブリ名の指定に関する詳細なガイダンスについては、MSDN ドキュメントを参照してください。
さらなる探索:
C# リフレクションをより詳しく理解するには、Type.GetType()
、MethodInfo.GetMethod()
、および MethodInfo.Invoke()
に関する Microsoft の公式ドキュメントを参照してください。 これらのリソースは、包括的な詳細と高度な使用シナリオを提供します。
以上がリフレクションを使用して C# の文字列からクラス参照を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。