Exportar (0) Imprimir
Expandir todo

BestFitMappingAttribute (Clase)

Actualización: noviembre 2007

Controla si los caracteres Unicode se convierten en los caracteres ANSI coincidentes más cercanos.

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

[AttributeUsageAttribute(AttributeTargets.Assembly|AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Interface, Inherited = false)]
[ComVisibleAttribute(true)]
public sealed class BestFitMappingAttribute : Attribute
/** @attribute AttributeUsageAttribute(AttributeTargets.Assembly|AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Interface, Inherited = false) */
/** @attribute ComVisibleAttribute(true) */
public final class BestFitMappingAttribute extends Attribute
public final class BestFitMappingAttribute extends Attribute

Este atributo se puede aplicar a ensamblados, interfaces, clases o estructuras.

De forma predeterminada, Common Language Runtime convierte en caracteres ANSI todos los caracteres Unicode administrados que se pasen a un método no administrado ejecutado en Windows 98 o Windows Me. La asignación de ajuste perfecto ("best-fit mapping") permite que el Cálculo de referencia de interoperabilidad ("interop marshaler") seleccione el carácter coincidente más cercano cuando no haya una coincidencia exacta. Por ejemplo, el contador de referencias convierte el carácter Unicode de copyright en "c" para los métodos no administrados que aceptan caracteres ANSI.

0th016zb.alert_caution(es-es,VS.90).gifPrecaución:

Algunos caracteres carecen de una representación de ajuste perfecto, por lo que se consideran caracteres no asignables. Normalmente, los caracteres que no pueden asignarse se convierten en el carácter ANSI predeterminado '?'. Algunos caracteres Unicode se convierten en caracteres peligrosos, como el carácter de barra diagonal inversa ('\'), que puede cambiar una ruta de acceso accidentalmente.

BestFitMappingAttribute proporciona dos parámetros para controlar algunos aspectos de la asignación de ajuste perfecto. El primer parámetro se utiliza para activar y desactivar la asignación de ajuste perfecto. El valor predeterminado es true, que habilita la asignación de ajuste perfecto en los niveles de ensamblado, de interfaz y de clase. Un atributo que se aplica a una interfaz o clase reemplaza un atributo en el nivel de ensamblado. Del mismo modo, se puede habilitar o deshabilitar la asignación de ajuste perfecto para las llamadas de invocación de plataforma utilizando el campo DllImportAttribute.BestFitMapping. Un valor que se establece mediante el campo de invocación de plataforma reemplaza todos los niveles de BestFitMappingAttribute.

El segundo parámetro se puede utilizar para controlar que se produzcan excepciones en caracteres no asignables. El valor predeterminado del campo ThrowOnUnmappableChar es false, lo que impide que se inicien excepciones cada vez que el motor en tiempo de ejecución encuentra un carácter Unicode que debe convertirse en el carácter ANSI '?'. Aunque la asignación de ajuste perfecto sea true, los caracteres que no se pueden asignar generan excepciones si el campo ThrowOnUnmappableChar es true. Para reforzar la seguridad, se pueden alternar los parámetros, es decir, se puede cambiar el primer parámetro a false y el segundo a true. Esta combinación de valores de parámetros desactiva la asignación de ajuste perfecto, pero habilita el mecanismo de producción de excepciones como medida de seguridad.

0th016zb.alert_caution(es-es,VS.90).gifPrecaución:

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

En el siguiente ejemplo se muestra la forma en que se deshabilita la asignación de ajuste perfecto y la forma en que se inicia una excepción cuando los caracteres Unicode se convierten en el carácter ANSI '?'. El establecimiento de los parámetros de BestFitMappingAttribute de esta forma constituye una medida adicional de seguridad.

[BestFitMapping(false, ThrowOnUnmappableChar = true)]
 interface IMyInterface1 
 {
     //Insert code here.
 }

System.Object
  System.Attribute
    System.Runtime.InteropServices.BestFitMappingAttribute

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft