展開 最小化

Type.GetInterface メソッド

2013/12/12

派生クラスでオーバーライドされた場合、インターフェイス名の大文字と小文字を区別するかどうかを指定して、指定したインターフェイスを検索します。

Namespace:  System
アセンブリ:  mscorlib (mscorlib.dll 内)

public abstract Type GetInterface(
	string name,
	bool ignoreCase
)

パラメーター

name
型: System.String
取得するインターフェイスの名前を格納している String。ジェネリック インターフェイスの場合、これは完全修飾名です。
ignoreCase
型: System.Boolean
単純なインターフェイス名を指定する name の部分 (名前空間が大文字と小文字を厳密に区別することを指定されている部分) で大文字と小文字の区別を無視する場合は、true
または
name のすべての部分の検索時に大文字と小文字を区別する場合は、false

戻り値

型: System.Type
現在の Type で実装または継承されているインターフェイスのうち、指定した名前のインターフェイスが存在する場合は、そのインターフェイスを表す Type オブジェクト。それ以外の場合は null

例外条件
ArgumentNullException

namenull です。

AmbiguousMatchException

現在の Type は、別の型引数で同じジェネリック インターフェイスを実装する型を表します。

ignoreCase パラメーターは、名前空間ではなく単純なインターフェイス名にのみ適用されます。名前空間を指定する name の部分は大文字と小文字を区別する必要があります。区別しなかった場合は、インターフェイスが検出されません。たとえば、文字列 "System.icomparable" を指定すると IComparable インターフェイスが検出されますが、文字列 "system.icomparable" では検出されません。

現在の Type が構築ジェネリック型を表している場合、このメソッドは、型パラメーターを適切な型の引数で置き換えて Type を返します。

現在の Type がジェネリック型定義またはジェネリック メソッド定義の型パラメーターを表す場合、このメソッドはインターフェイス制約およびクラス制約またはインターフェイス制約から継承されたすべてのインターフェイスを検索します。

メモメモ:

ジェネリック インターフェイスの場合、name パラメーターは、抑音アクセント (`) および型パラメーターの数で終わる完全修飾名です。ジェネリック インターフェイス定義と構築されたジェネリック インターフェイスの場合も同じです。たとえば、IExample<T> (Visual Basic の場合は IExample(Of T)) または IExample<string> (Visual Basic の場合は IExample(Of String)) を見つけるには、"IExample`1" を検索します。

GetInterface(String, Boolean) メソッド オーバーロードを使用し、大文字と小文字を区別してジェネリック IDictionary<TKey, TValue> インターフェイスのジェネリック Dictionary<TKey, TValue> クラスの検索を実行する例を次に示します。

この例では、GetInterfaceMap メソッドの使用例も示します。

メモメモ:

この例を実行するには、「Windows Phone での静的 TextBlock コントロールのあるコード例のビルド」を参照してください。


using System;
using System.Reflection;
using System.Collections.Generic;

class Example
{

    public static void Demo(System.Windows.Controls.TextBlock outputBlock)
    {

        Dictionary<int, string> obj = new Dictionary<int, string>();

        // Get the mapping between the interface methods of the 
        // generic IDictionary interface and the Dictionary methods
        // that implement them.
        if (obj.GetType().GetInterface("IDictionary`2", false) != null)
        {
            Type idictType = typeof(IDictionary<int, string>);
            InterfaceMapping map = obj.GetType().GetInterfaceMap(idictType);

            MethodInfo[] interfaceMethods = map.InterfaceMethods;
            MethodInfo[] implementationMethods = map.TargetMethods;

            for(int i=0; i<interfaceMethods.Length; i++)
            {
                outputBlock.Text += interfaceMethods[i].ToString() + 
                    " is implemented by:\n       " + 
                    implementationMethods[i].ToString() + "\n";
            }
        }
    }
}

/* This example produces the following output:

System.String get_Item(Int32) is implemented by:
       System.String get_Item(Int32)
System.String set_Item(Int32, System.String) is implemented by:
       Void set_Item(Int32, System.String)
System.Collections.Generic.ICollection`1[System.Int32] get_Keys() is implemented by:
       System.Collections.Generic.ICollection`1[System.Int32] System.Collections.Generic.IDictionary<TKey,TValue>.get_Keys()
System.Collections.Generic.ICollection`1[System.String] get_Values() is implemented by:
       System.Collections.Generic.ICollection`1[System.String] System.Collections.Generic.IDictionary<TKey,TValue>.get_Values()
Boolean ContainsKey(Int32) is implemented by:
       Boolean ContainsKey(Int32)
Void Add(Int32, System.String) is implemented by:
       Void Add(Int32, System.String)
Boolean Remove(Int32) is implemented by:
       Boolean Remove(Int32)
Boolean TryGetValue(Int32, System.String ByRef) is implemented by:
       Boolean TryGetValue(Int32, System.String ByRef)
 */


Windows Phone OS

サポート: 8.0, 7.1, 7.0

表示:
© 2014 Microsoft