リフレクションを使用した拡張メソッドの追加の決定
C# では、拡張メソッドはソース コードを変更せずに既存のクラスを拡張できます。拡張メソッドがクラスに追加されているかどうかを確認するために、リフレクションは実行可能な手法を提供します。
リフレクションを使用すると、ExtensionAttribute で修飾されたクラスのアセンブリを検査できます。これらのクラス内で、同様に ExtensionAttribute で修飾されたメソッドを検索します。次に、メソッドの最初のパラメーターの型をターゲットの型と比較します。
たとえば、文字列クラスの拡張機能として Reverse メソッドを持つ StringExtensions クラスを検討します。
public static class StringExtensions { public static string Reverse(this string value) { // Implementation omitted } }
Using提供されたコード スニペットを使用すると、次の拡張メソッドを検出できます。
var assembly = typeof(StringExtensions).Assembly; var extensionMethods = GetExtensionMethods(assembly, typeof(string)); Console.WriteLine(extensionMethods.First()); // Output: "StringExtensions.Reverse(string)"
このアプローチにより、関連するすべてのメソッドが確実にチェックされます。アセンブリを作成し、拡張メソッドがコードベースに正しく追加されたことを確認するメカニズムを提供します。
以上がC# で追加された拡張メソッドを検出するためにリフレクションをどのように使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。