Type.GetInterfaceMap(Type) Metodo

Definizione

Restituisce un mapping dell'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 di interfaccia per cui recuperare un mapping.

Valori restituiti

Oggetto che rappresenta il mapping dell'interfaccia per interfaceType.

Implementazioni

Attributi

Eccezioni

interfaceType non è implementato dal tipo corrente.

oppure

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

oppure

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

oppure

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

interfaceType è null.

L'oggetto corrente Type rappresenta un parametro di tipo generico, IsGenericParameter ovvero .true

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

Esempio

Nell'esempio seguente viene chiamato il GetInterfaceMap metodo per determinare il mapping dell'interfaccia IFormatProvider ai CultureInfo metodi e il mapping dell'interfaccia IAppDomainSetup alle AppDomainSetup proprietà. Si noti che, poiché l'interfaccia IAppDomainSetup definisce un set di proprietà, l'oggetto restituito InterfaceMapping include oggetti separati MethodInfo per le funzioni di accesso get e set di una 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
open System
open System.Globalization

let showInterfaceMapping (intType: Type) (implType: Type) =
    let map = implType.GetInterfaceMap intType
    printfn $"Mapping of {map.InterfaceType} to {map.TargetType}: "
    for i = 0 to map.InterfaceMethods.Length - 1 do
        let im = map.InterfaceMethods[i]
        let tm = map.TargetMethods[i]
        printfn $"   {im.Name} --> {tm.Name}"
    printfn ""

let interf = [| typeof<IFormatProvider>; typeof<IAppDomainSetup> |]
let impl = [| typeof<CultureInfo>; typeof<AppDomainSetup> |]

for i = 0 to interf.Length - 1 do
    showInterfaceMapping interf[i] impl[i]

// 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 il mapping di un'interfaccia ai membri effettivi di una classe che implementa tale interfaccia.

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

Si applica a

Vedi anche