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を指定します。
このように、リフレクションを活用することで、実行時に型が持つインターフェイス情報を柔軟に取得することができます。
-
C#で現在のインスタンスの型を取得する方法(GetTypeメソッド)
C#でオブジェクトの現在のインスタンスの型(実行時の型)を取得するには、GetType()メソッドを使用します。このメソッドはすべての型の基底クラスであるSystem.Objectに定義されており、呼び出し元インスタンスの正確な型をSystem.Typeオブジェクトとして返します。 GetType()メソッドの基本 GetType()はインスタンスに対して呼び出すことで、その実行時の型情報を取得できます。戻り値であるTypeオブジェクトをそのまま文字列連結して出力すると、「System.String」や「System.Int32」のような完全修飾型名が表示されます。 例1:string型のイン
-
C#で列挙型(Enum)の型を取得する方法
C#で列挙型(Enum)の型情報を取得するには、GetType()メソッドを使用します。この記事では、実際のコード例を通じて、列挙型の型名や基になる型(Underlying Type)の取得方法をわかりやすく解説します。 列挙型の準備 まず、複数の列挙型の値を格納した配列を用意します。ここでは、.NET標準ライブラリに含まれる ConsoleColor と DayOfWeek の2つの列挙型を使用します。 Enum[] values = { ConsoleColor.Blue, DayOfWeek.Sunday}; GetType()メソッドで型を取得する 列挙値の型を取得するには、各値