Type.GetInterfaceMap(Type) Méthode
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Retourne un mappage d'interface pour le type interface spécifié.
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
- interfaceType
- Type
Type d'interface pour lequel extraire un mappage.
Objet qui représente le mappage d'interface pour interfaceType
.
- Attributs
interfaceType
n’est pas implémenté par le type courant.
- ou -
L’argument interfaceType
ne fait pas référence à une interface.
- ou -
L’instance actuelle ou l’argument interfaceType
est un type générique ouvert (autrement dit, la propriété ContainsGenericParameters retourne true
).
- ou -
interfaceType
est une interface générique, et le type actuel est un type tableau.
interfaceType
a la valeur null
.
Le Type actuel représente un paramètre de type générique ; autrement dit, IsGenericParameter est true
.
La méthode appelée n’est pas prise en charge dans la classe de base. Les classes dérivées doivent fournir une implémentation.
L’exemple suivant appelle la GetInterfaceMap méthode pour déterminer comment l’interface IFormatProvider est mappée aux CultureInfo méthodes et comment l’interface IAppDomainSetup est mappée aux AppDomainSetup propriétés. Notez que, étant donné que l’interface IAppDomainSetup définit un ensemble de propriétés, l’objet retourné InterfaceMapping inclut des objets distincts MethodInfo pour les accesseurs get et set d’une propriété.
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
La carte d’interface indique comment une interface est mappée aux membres réels d’une classe qui implémente cette interface.
Si le actuel Type représente un type générique construit, les paramètres de type sont remplacés par les arguments de type appropriés dans les éléments du InterfaceMapping retourné par cette méthode.
Produit | Versions |
---|---|
.NET | Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.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, 4.8.1 |
.NET Standard | 2.0, 2.1 |
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :