Compartir a través de


Campo DllImportAttribute.ThrowOnUnmappableChar

 

Publicado: octubre de 2016

Habilita o deshabilita el inicio de una excepción cuando un carácter Unicode que se convierte en un carácter "?" caracteres.

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

Sintaxis

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

Valor de campo

Type: System.Boolean

Comentarios

true para indicar que se produce una excepción cada vez que el contador de referencias de interoperabilidad convierte un carácter que no puede asignarse; false para indicar que el ThrowOnUnmappableChar campo está deshabilitado. Este campo es false de forma predeterminada.

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 usar el DllImportAttribute para definir una función DLL en código administrado, en lugar de utilizar el Declare instrucción. Establecer el ThrowOnUnmappableChar 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
Windows Phone
Disponible desde 8.1

Ver también

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

Volver al principio