C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#で現在のTypeが実装または継承する特定のインターフェイスを取得する方法

C#において、現在の Type が実装または継承している特定のインターフェイスを取得するには、Type.GetInterface() メソッドを使用します。このメソッドは、指定した名前のインターフェイスが見つかった場合はその Type オブジェクトを返し、見つからなかった場合は null を返します。

GetInterfaceメソッドの基本構文

GetInterface メソッドには、主に以下の2つのオーバーロードがあります。

  • GetInterface(string name) — インターフェイス名を指定して検索します。大文字小文字は区別されます。
  • GetInterface(string name, bool ignoreCase) — 第2引数に true を渡すことで、大文字小文字を区別せずに検索できます。

例1:double型からIFormattableインターフェイスを取得する

まず、double 型に対して IFormattable インターフェイスを取得する基本的な例を見てみましょう。

using System;

public class Demo {
   public static void Main() {
      Type type = typeof(double);
      Type myInterface = type.GetInterface("IFormattable");
      Console.WriteLine("Interface = " + myInterface);
   }
}

出力結果

上記のコードを実行すると、次の出力が得られます。

Interface = System.IFormattable

double 型は IFormattable インターフェイスを実装しているため、該当するインターフェイスの完全修飾名が出力されました。

例2:大文字小文字を無視して検索する

次に、float 型に対して、ignoreCase パラメータを true に設定してインターフェイスを取得する例を見てみましょう。

using System;

public class Demo {
   public static void Main() {
      Type type = typeof(float);
      Type myInterface = type.GetInterface("IFormattable", true);
      Console.WriteLine("Interface = " + myInterface);
   }
}

出力結果

このコードも同様に、以下の出力を生成します。

Interface = System.IFormattable

ポイントまとめ

  • GetInterface() は、現在の Type が直接または間接的に実装・継承しているインターフェイスのみを検索対象とします。
  • 該当するインターフェイスが存在しない場合、例外はスローされず null が返されるため、戻り値のnullチェックを行うのが安全です。
  • 大文字小文字の区別を無視したい場合は、第2引数に true を指定します。

このように、リフレクションを活用することで、実行時に型が持つインターフェイス情報を柔軟に取得することができます。

  1. C#で現在のインスタンスの型を取得する方法(GetTypeメソッド)

    C#でオブジェクトの現在のインスタンスの型(実行時の型)を取得するには、GetType()メソッドを使用します。このメソッドはすべての型の基底クラスであるSystem.Objectに定義されており、呼び出し元インスタンスの正確な型をSystem.Typeオブジェクトとして返します。 GetType()メソッドの基本 GetType()はインスタンスに対して呼び出すことで、その実行時の型情報を取得できます。戻り値であるTypeオブジェクトをそのまま文字列連結して出力すると、「System.String」や「System.Int32」のような完全修飾型名が表示されます。 例1:string型のイン

  2. C#で列挙型(Enum)の型を取得する方法

    C#で列挙型(Enum)の型情報を取得するには、GetType()メソッドを使用します。この記事では、実際のコード例を通じて、列挙型の型名や基になる型(Underlying Type)の取得方法をわかりやすく解説します。 列挙型の準備 まず、複数の列挙型の値を格納した配列を用意します。ここでは、.NET標準ライブラリに含まれる ConsoleColor と DayOfWeek の2つの列挙型を使用します。 Enum[] values = { ConsoleColor.Blue, DayOfWeek.Sunday}; GetType()メソッドで型を取得する 列挙値の型を取得するには、各値