Type.GetInterfaceMap(Type) Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
A megadott illesztőtípus felületleképezését adja vissza.
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
Paraméterek
- interfaceType
- Type
A leképezés lekéréséhez használt felülettípus.
Válaszok
Egy objektum, amely a felület megfeleltetését jelöli a következőhöz interfaceType: .
Megvalósítás
- Attribútumok
Kivételek
interfaceType nincs implementálva az aktuális típus.
-vagy-
Az interfaceType argumentum nem hivatkozik interfészre.
-vagy-
Az aktuális példány vagy interfaceType argumentum egy nyitott általános típus, azaz a ContainsGenericParameters tulajdonság eredménye true.
-vagy-
interfaceType egy általános felület, az aktuális típus pedig tömbtípus.
interfaceType az null.
Az aktuális Type érték egy általános típusparamétert jelöl, IsGenericParameter azaz .true
A meghívott metódus nem támogatott az alaposztályban. A származtatott osztályoknak implementációt kell biztosítaniuk.
Példák
Az alábbi példa meghívja a GetInterfaceMap metódust annak meghatározására, hogy az IFormatProvider interfész hogyan képez le metódusokat CultureInfo , és hogyan képezi le a felület a IAppDomainSetup tulajdonságokat AppDomainSetup . Vegye figyelembe, hogy mivel a IAppDomainSetup felület tulajdonságokat határoz meg, a visszaadott InterfaceMapping objektum külön MethodInfo objektumokat tartalmaz a tulajdonság beolvasási és beállítási tartozékaihoz.
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
Megjegyzések
A felülettérkép azt jelzi, hogy egy felület hogyan van leképezve a tényleges tagokra egy olyan osztályban, amely megvalósítja az adott felületet.
Ha az áram Type egy létrehozott általános típust jelöl, a típusparaméterek helyébe a metódus által visszaadott elemek megfelelő típusargumentumai InterfaceMapping lépnek.