내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Type.GetInterface 메서드

2013-12-13

파생 클래스에서 재정의된 경우 인터페이스 이름에 대해 대/소문자를 구분하지 않고 검색할지 여부를 지정하여 지정된 인터페이스를 검색합니다.

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

Windows Phone

표시:
© 2014 Microsoft