英語で読む

次の方法で共有


Type.GetInterfaceMap(Type) メソッド

定義

指定したインターフェイス型に対するインターフェイスの割り当てを返します。

C#
public virtual System.Reflection.InterfaceMapping GetInterfaceMap (Type interfaceType);
C#
[System.Runtime.InteropServices.ComVisible(true)]
public virtual System.Reflection.InterfaceMapping GetInterfaceMap (Type interfaceType);

パラメーター

interfaceType
Type

割り当ての取得対象であるインターフェイス型。

戻り値

InterfaceMapping

interfaceType に対するインターフェイスの割り当てを表すオブジェクト。

実装

属性

例外

interfaceType は、現在の型では実装されていません。

または interfaceType 引数は、インターフェイスを参照しません。

または

現在のインスタンスまたは interfaceType 引数はオープン ジェネリック型です。つまり、ContainsGenericParameters プロパティは true を返します。

または

interfaceType ジェネリック インターフェイスで、現在の型は配列型です。

interfaceTypenullです。

現在の Type はジェネリック型パラメーターを表しています。つまり、 IsGenericParametertrueです。

呼び出されたメソッドは基底クラスでサポートされていません。 派生クラスには実装を指定しなければなりません。

次の例では、メソッドを呼び出して、 GetInterfaceMap インターフェイスがメソッドにどのようにマップされるか、 IFormatProvider CultureInfo およびインターフェイスがプロパティにどのようにマップされるかを決定し IAppDomainSetup AppDomainSetup ます。 インターフェイスは一連のプロパティを定義するため、 IAppDomainSetup 返されるオブジェクトには、 InterfaceMapping MethodInfo プロパティの get アクセサーと set アクセサーの個別のオブジェクトが含まれていることに注意してください。

C#
using System;
using System.Globalization;
using System.Reflection;

public class Example
{
   public static void Main()
   {
      Type[] interf = { typeof(IFormatProvider), typeof(IAppDomainSetup) };
      Type[] impl = { typeof(CultureInfo), typeof(AppDomainSetup) };

      for (int ctr = 0; ctr < interf.Length; ctr++)
         ShowInterfaceMapping(interf[ctr], impl[ctr]);
   }

   private static void ShowInterfaceMapping(Type intType, Type implType)
   {
      InterfaceMapping map = implType.GetInterfaceMap(intType);
      Console.WriteLine("Mapping of {0} to {1}: ", map.InterfaceType, map.TargetType);
      for (int ctr = 0; ctr < map.InterfaceMethods.Length; ctr++) {
         MethodInfo im = map.InterfaceMethods[ctr];
         MethodInfo tm = map.TargetMethods[ctr];
         Console.WriteLine("   {0} --> {1}", im.Name,tm.Name);
      }
      Console.WriteLine();
   }
}
// The example displays the following output:
//    Mapping of System.IFormatProvider to System.Globalization.CultureInfo:
//       GetFormat --> GetFormat
//
//    Mapping of System.IAppDomainSetup to System.AppDomainSetup:
//       get_ApplicationBase --> get_ApplicationBase
//       set_ApplicationBase --> set_ApplicationBase
//       get_ApplicationName --> get_ApplicationName
//       set_ApplicationName --> set_ApplicationName
//       get_CachePath --> get_CachePath
//       set_CachePath --> set_CachePath
//       get_ConfigurationFile --> get_ConfigurationFile
//       set_ConfigurationFile --> set_ConfigurationFile
//       get_DynamicBase --> get_DynamicBase
//       set_DynamicBase --> set_DynamicBase
//       get_LicenseFile --> get_LicenseFile
//       set_LicenseFile --> set_LicenseFile
//       get_PrivateBinPath --> get_PrivateBinPath
//       set_PrivateBinPath --> set_PrivateBinPath
//       get_PrivateBinPathProbe --> get_PrivateBinPathProbe
//       set_PrivateBinPathProbe --> set_PrivateBinPathProbe
//       get_ShadowCopyDirectories --> get_ShadowCopyDirectories
//       set_ShadowCopyDirectories --> set_ShadowCopyDirectories
//       get_ShadowCopyFiles --> get_ShadowCopyFiles
//       set_ShadowCopyFiles --> set_ShadowCopyFiles

注釈

インターフェイスマップは、インターフェイスが、そのインターフェイスを実装するクラスの実際のメンバーにどのようにマップされるかを示します。

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

適用対象

製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1

こちらもご覧ください