Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Steuert, ob Unicode-Zeichen in die ANSI-Zeichen konvertiert werden, die ihnen am ähnlichsten sind.
Namespace: System.Runtime.InteropServices
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
<AttributeUsageAttribute(AttributeTargets.Assembly Or AttributeTargets.Class Or AttributeTargets.Struct Or AttributeTargets.Interface, Inherited:=False)> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class BestFitMappingAttribute
Inherits Attribute
'Usage
Dim instance As BestFitMappingAttribute
[AttributeUsageAttribute(AttributeTargets.Assembly|AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Interface, Inherited=false)]
[ComVisibleAttribute(true)]
public sealed class BestFitMappingAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Assembly|AttributeTargets::Class|AttributeTargets::Struct|AttributeTargets::Interface, Inherited=false)]
[ComVisibleAttribute(true)]
public ref class BestFitMappingAttribute sealed : public Attribute
/** @attribute AttributeUsageAttribute(AttributeTargets.Assembly|AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Interface, Inherited=false) */
/** @attribute ComVisibleAttribute(true) */
public final class BestFitMappingAttribute extends Attribute
AttributeUsageAttribute(AttributeTargets.Assembly|AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Interface, Inherited=false)
ComVisibleAttribute(true)
public final class BestFitMappingAttribute extends Attribute
Hinweise
Sie können dieses Attribut auf eine Assembly, Schnittstelle, Klasse oder Struktur anwenden.
In der Standardeinstellung konvertiert die Common Language Runtime alle verwalteten Unicode-Zeichen, die an eine unter Windows 98 oder Windows Me ausgeführte, nicht verwaltete Methode übergeben werden, in ANSI-Zeichen. Die optimierte Zuordnung ermöglicht dem Interop-Marshalling die Auswahl eines nahezu entsprechenden Zeichens, wenn keine genaue Entsprechung vorhanden ist. Bei nicht verwalteten Methoden, die ANSI-Zeichen akzeptieren, konvertiert der Marshaller beispielsweise das Copyrightzeichen aus Unicode in den Buchstaben 'c'.
Warnung
Für einige Zeichen ist keine optimale Darstellung verfügbar. Diese Zeichen sind Zeichen, die nicht zugeordnet werden können. Zeichen, die nicht zugeordnet werden können, werden normalerweise in das ANSI-Standardzeichen '?' konvertiert. Bestimmte Unicode-Zeichen werden in gefährliche Zeichen konvertiert, beispielsweise den umgekehrten Schrägstrich '\', durch den ein Pfad unwiderruflich geändert werden kann.
BestFitMappingAttribute stellt zwei Parameter zum Steuern von Aspekten der optimalen Zuordnung bereit. Mithilfe des ersten Parameters wird die optimale Zuordnung aktiviert bzw. deaktiviert. Der Standardwert ist true. Damit wird die optimale Zuordnung auf Assembly-, Schnittstellen- und Klassenebene aktiviert. Ein Attribut auf Assemblyebene wird durch ein auf eine Schnittstelle oder Klasse angewendetes Attribut überschrieben. Sie können die optimale Zuordnung mithilfe des Felds DllImportAttribute.BestFitMapping ebenso für Plattformaufrufe aktivieren bzw. deaktivieren. Ein durch das Feld für Plattformaufrufe festgelegter Wert überschreibt alle Ebenen des BestFitMappingAttribute.
Mithilfe des zweiten Parameters können Sie steuern, ob bei Zeichen, die nicht zugeordnet werden können, eine Ausnahme ausgelöst wird. Der Standardwert für das Feld ThrowOnUnmappableChar ist false. Dadurch wird deaktiviert, dass die Laufzeit immer dann eine Ausnahme auslöst, wenn ein Unicode-Zeichen gefunden wird, das in das ANSI-Zeichen '?' konvertiert werden muss. Selbst wenn für die optimale Zuordnung true festgelegt ist, wird durch nicht zuordnungsfähige Zeichen eine Ausnahme ausgelöst, wenn das Feld ThrowOnUnmappableChar den Wert true hat. Zur Erhöhung der Sicherheit können Sie den ersten Parameter auf false und den zweiten Parameter auf true festlegen. Durch diese Kombination von Parametereinstellungen wird die optimale Zuordnung deaktiviert, als Sicherheitsmaßnahme wird jedoch der Mechanismus zum Auslösen von Ausnahmen aktiviert.
Warnung
Die von BestFitMappingAttribute bereitgestellten Standardwerte können nicht geändert werden, wenn ein verwaltetes Array, dessen Elemente ANSI-Zeichen oder LPSTRs sind, an ein nicht verwaltetes sicheres Array übergeben wird. Die optimale Zuordnung ist immer aktiviert, und es kann keine Ausnahme ausgelöst werden. Beachten Sie, dass diese Kombination Ihr Sicherheitsmodell gefährden kann.
Beispiel
Das folgende Beispiel veranschaulicht, wie die optimale Zuordnung deaktiviert und bei der Konvertierung von Unicode-Zeichen in das ANSI-Zeichen '?' eine Ausnahme ausgelöst wird. Wenn BestFitMappingAttribute-Parameter auf diese Weise festgelegt werden, wird der Grad der Sicherheit erhöht.
<BestFitMapping(False, ThrowOnUnmappableChar := True)> _
Interface IMyInterface1
'Insert code here.
End Interface
[BestFitMapping(false, ThrowOnUnmappableChar = true)]
interface IMyInterface1
{
//Insert code here.
}
Vererbungshierarchie
System.Object
System.Attribute
System.Runtime.InteropServices.BestFitMappingAttribute
Threadsicherheit
Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Plattformen
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1
Siehe auch
Referenz
BestFitMappingAttribute-Member
System.Runtime.InteropServices-Namespace
BestFitMapping