Compartir a través de


Campo DllImportAttribute.BestFitMapping

 

Publicado: octubre de 2016

Habilita o deshabilita el comportamiento de asignación con ajuste perfecto al convertir caracteres Unicode en caracteres ANSI.

Espacio de nombres:   System.Runtime.InteropServices
Ensamblado:  mscorlib (en mscorlib.dll)

Sintaxis

public bool BestFitMapping
public:
bool BestFitMapping
val mutable BestFitMapping : bool
Public BestFitMapping As Boolean

Valor de campo

Type: System.Boolean

Comentarios

Si true, con ajuste perfecto comportamiento de asignación está habilitada; de lo contrario, con ajuste perfecto asignación está deshabilitada. El BestFitMapping es el campo true de forma predeterminada. La configuración para este campo invalida la configuración de cualquier nivel de la System.Runtime.InteropServices.BestFitMappingAttribute atributo.

Common language runtime convierte en caracteres ANSI que cualquier carácter Unicode administrado pasado a un método no administrado que se ejecute en Windows 98 o Windows Millennium Edition. Asignación de ajuste perfecto permite que el serializador de interoperabilidad proporcionar un carácter coincidente cerrar cuando no existe ninguna coincidencia exacta. Por ejemplo, el contador de referencias convierte el carácter Unicode de copyright para 'c' para métodos no administrados que aceptan caracteres ANSI. Algunos caracteres carecen de una representación de ajuste perfecto; estos caracteres se denominan no se puede asignar. No se puede asignar caracteres normalmente se convierten en el valor predeterminado '?' Carácter ANSI.

Advertencia

Algunos caracteres Unicode se convierten en caracteres peligrosos, como la barra diagonal inversa ' \' carácter, que puede cambiar inadvertidamente una ruta de acceso. Estableciendo el ThrowOnUnmappableChar campo true, puede indicar la presencia de un carácter no asignable al llamador iniciando una excepción.

Advertencia

No se puede cambiar los valores predeterminados proporcionados por el BestFitMapping y ThrowOnUnmappableChar campos cuando se pasa una matriz administrada cuyos elementos son caracteres ANSI o punteros LPSTR a una matriz segura no administrada. Asignación de ajuste perfecto siempre está habilitada y se inicia ninguna excepción. Tenga en cuenta que esta combinación puede poner en peligro su modelo de seguridad.

Ejemplos

En algunos casos, los desarrolladores de Visual Basic utilizar la DllImportAttribute, en lugar de la Declare instrucción, para definir una función DLL en código administrado. Establecer el BestFitMapping campo es uno de estos casos. En el ejemplo siguiente se muestra cómo aplicar el más estricto definiciones de método de invocación de seguridad de asignación de caracteres a una plataforma especificando el juego de caracteres ANSI, deshabilitando el comportamiento de asignación de ajuste perfecto y producir una excepción en los caracteres Unicode no asignados.

[DllImport("My.dll", CharSet=CharSet.Ansi,
               BestFitMapping=false,
               ThrowOnUnmappableChar=true)]
static extern int SomeFuncion2(int parm);
<DllImport("My.dll", CharSet := CharSet.Ansi, _
               BestFitMapping := false, _
               ThrowOnUnmappableChar := true)> _
Public Shared Function SomeFuncion2(parm As Integer) As Integer
End Function
[DllImport("My.dll", CharSet=CharSet::Ansi,
               BestFitMapping=false,
               ThrowOnUnmappableChar=true)]
int SomeFuncion2(int parm);

Información de versión

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 1.1
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 8.0
Windows Phone
Disponible desde 8.1

Ver también

CharSet
BestFitMappingAttribute
Clase DllImportAttribute
Espacio de nombres System.Runtime.InteropServices
Interop Marshaling

Volver al principio