Condividi tramite


Type.GetInterfaceMap(Type) Metodo

Definizione

Restituisce un mapping di interfaccia per il tipo di interfaccia specificato.

public:
 virtual System::Reflection::InterfaceMapping GetInterfaceMap(Type ^ interfaceType);
public virtual System.Reflection.InterfaceMapping GetInterfaceMap (Type interfaceType);
[System.Runtime.InteropServices.ComVisible(true)]
public virtual System.Reflection.InterfaceMapping GetInterfaceMap (Type interfaceType);
abstract member GetInterfaceMap : Type -> System.Reflection.InterfaceMapping
override this.GetInterfaceMap : Type -> System.Reflection.InterfaceMapping
[<System.Runtime.InteropServices.ComVisible(true)>]
abstract member GetInterfaceMap : Type -> System.Reflection.InterfaceMapping
override this.GetInterfaceMap : Type -> System.Reflection.InterfaceMapping
Public Overridable Function GetInterfaceMap (interfaceType As Type) As InterfaceMapping

Parametri

interfaceType
Type

Tipo dell'interfaccia per cui recuperare un mapping.

Restituisce

InterfaceMapping

Oggetto che rappresenta il mapping dell'interfaccia per il parametro interfaceType.

Implementazioni

Attributi

Eccezioni

interfaceType non è implementato dal tipo corrente.

-oppure- L'argomento interfaceType non fa riferimento a un'interfaccia.

-oppure-

L'istanza corrente o l'argomento interfaceType sono un tipo generico aperto, ovvero, la proprietà ContainsGenericParameters restituisce true.

-oppure-

interfaceType è un'interfaccia generica e il tipo corrente è un tipo di matrice.

interfaceType è null.

L'oggetto Type corrente rappresenta un parametro di tipo generico; in altre parole, IsGenericParameter è true.

Il metodo richiamato non è supportato nella classe base. Le classi derivate devono fornire un'implementazione.

Esempio

Nell'esempio seguente viene chiamato il metodo per determinare come viene eseguito il mapping dell'interfaccia ai metodi e come viene eseguito il GetInterfaceMap IFormatProvider mapping CultureInfo IAppDomainSetup dell'interfaccia alle AppDomainSetup proprietà. Si noti che, poiché l'interfaccia definisce un set di IAppDomainSetup proprietà, l'oggetto restituito include oggetti separati per le funzioni di accesso InterfaceMapping get e set di una MethodInfo proprietà.

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
Imports System.Globalization
Imports System.Reflection

Module Example
   Public Sub Main()
      Dim int() As Type = { GetType(IFormatProvider), GetType(IAppDomainSetup) }
      Dim impl() As Type = { GetType(CultureInfo), GetType(AppDomainSetup) }
      
      For ctr As Integer = 0 To int.Length - 1
         ShowInterfaceMapping(int(ctr), impl(ctr))
      Next
   End Sub
   
   Private Sub ShowInterfaceMapping(intType As Type, implType As Type)
      Dim map As InterfaceMapping = implType.GetInterfaceMap(intType)
      Console.WriteLine("Mapping of {0} to {1}: ", map.InterfaceType, map.TargetType)
      For ctr As Integer = 0 To map.InterfaceMethods.Length - 1
         Dim im As MethodInfo = map.InterfaceMethods(ctr)
         Dim tm As MethodInfo = map.TargetMethods(ctr)
         Console.WriteLine("   {0} --> {1}", im.Name,tm.Name)
      Next
      Console.WriteLine()
   End Sub
End Module
' 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

Commenti

La mappa dell'interfaccia indica come viene eseguito il mapping di un'interfaccia ai membri effettivi in una classe che implementa tale interfaccia.

Se l'oggetto corrente rappresenta un tipo generico costruito, i parametri di tipo vengono sostituiti dagli argomenti di tipo appropriati negli elementi Type dell'oggetto InterfaceMapping restituito da questo metodo.

Si applica a

Vedi anche