c#拡張メソッドと動的呼び出し:制限
C#拡張法は、元のコードを変更せずに既存のタイプに機能を追加する強力な方法を提供します。 これらの方法は、馴染みのあるドット表記を使用して呼ばれます。 たとえば、
<code class="language-csharp">List<int> numbers = new List<int>() { 1, 2, 3, 4, 5 }; Console.WriteLine(numbers.First()); // Uses the LINQ extension method First()</code>ただし、
オブジェクトで拡張メソッドを呼び出しようとすると、制限が現れます。
dynamic
<code class="language-csharp">dynamic dynamicNumbers = numbers; Console.WriteLine(dynamicNumbers.First()); // Throws a RuntimeBinderException</code>オブジェクトでは、この静的分析は不可能です。 ダイナミック言語ランタイム(DLR)は、名前空間と
ディレクティブを考慮して、適切な拡張メソッドの複雑なランタイム検索を実行する必要があります。
したがって、dynamic
using
オブジェクトで拡張メソッドを直接呼び出すことは、C#ではサポートされていません。 拡張メソッドを呼び出す前に
以上がC# で拡張メソッドを動的に呼び出すことはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。