Compartilhar via


Classe BestFitMappingAttribute

 

Dica

The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Controla se os caracteres Unicode são convertidos em caracteres ANSI correspondentes mais próximos.

Namespace:   System.Runtime.InteropServices
Assembly:  mscorlib (em mscorlib.dll)

Hierarquia de Herança

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

Sintaxe

[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 : Attribute
[<Sealed>]
[<AttributeUsageAttribute(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Interface,
    Inherited = false)>]
[<ComVisibleAttribute(true)>]
type BestFitMappingAttribute = 
    class
        inherit Attribute
    end
<AttributeUsageAttribute(AttributeTargets.Assembly Or AttributeTargets.Class Or AttributeTargets.Struct Or AttributeTargets.Interface,
    Inherited := False)>
<ComVisibleAttribute(True)>
Public NotInheritable Class BestFitMappingAttribute
    Inherits Attribute

Construtores

Nome Descrição
System_CAPS_pubmethod BestFitMappingAttribute(Boolean)

Inicializa uma nova instância da classe BestFitMappingAttribute definida com o valor da propriedade BestFitMapping.

Propriedades

Nome Descrição
System_CAPS_pubproperty BestFitMapping

Obtém o comportamento de mapeamento de melhor ajuste ao converter caracteres Unicode em caracteres ANSI.

System_CAPS_pubproperty TypeId

Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute.(Herdado de Attribute.)

Métodos

Nome Descrição
System_CAPS_pubmethod Equals(Object)

Esta API dá suporte à infraestrutura produto e não se destina a ser usada diretamente do seu código. Retorna um valor que indica se essa instância é igual a um objeto especificado.(Herdado de Attribute.)

System_CAPS_pubmethod GetHashCode()

Retorna o código hash para essa instância.(Herdado de Attribute.)

System_CAPS_pubmethod GetType()

Obtém o Type da instância atual.(Herdado de Object.)

System_CAPS_pubmethod IsDefaultAttribute()

Quando substituído em uma classe derivada, indica se o valor dessa instância é o valor padrão para a classe derivada.(Herdado de Attribute.)

System_CAPS_pubmethod Match(Object)

Quando substituído em uma classe derivada, retorna um valor que indica se essa instância é igual a um objeto especificado.(Herdado de Attribute.)

System_CAPS_pubmethod ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.(Herdado de Object.)

Campos

Nome Descrição
System_CAPS_pubfield ThrowOnUnmappableChar

Habilita ou desabilita a geração de uma exceção em um caractere Unicode não mapeável que é convertido em um caractere "?" ANSI.

Implementações Explícitas da Interface

Nome Descrição
System_CAPS_pubinterfaceSystem_CAPS_privmethod _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição.(Herdado de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera as informações de tipo para um objeto, que pode ser usado para obter as informações de tipo para uma interface.(Herdado de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod _Attribute.GetTypeInfoCount(UInt32)

Retorna o número de interfaces de informações do tipo que um objeto fornece (0 ou 1).(Herdado de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornece acesso a propriedades e métodos expostos por um objeto.(Herdado de Attribute.)

Comentários

Você pode aplicar esse atributo para um assembly, interface, classe ou estrutura.

Por padrão, o common language runtime converte em caracteres ANSI que qualquer gerenciado caracteres Unicode passados para um método não gerenciado em execução no Windows 98 ou Windows Me. Mapeamento de melhor ajuste permite que o marshaler interoperabilidade selecionar um caractere de fechamento correspondente quando não existe nenhuma correspondência exata. Por exemplo, o marshaler converte o caractere Unicode copyright c para não gerenciados métodos que aceitam caracteres ANSI.

Aviso

Alguns caracteres não têm uma representação de melhor ajuste; Esses caracteres são chamados não mapeável. Caracteres não mapeável geralmente são convertidos para o padrão '?' Caractere ANSI. Determinados caracteres Unicode são convertidos em caracteres perigosos, como a barra invertida ' \' caractere, que pode alterar inadvertidamente um caminho.

BestFitMappingAttributefornece dois parâmetros para controlar aspectos de mapeamento de melhor ajuste. Você pode usar o primeiro parâmetro para alternar o mapeamento de melhor ajuste e desativar. O valor padrão é true, que permite o mapeamento de melhor ajuste no assembly, interface e níveis de classe. Um atributo aplicado a uma interface ou classe substitui um atributo de nível de assembly. Da mesma forma, você pode habilitar ou desabilitar o mapeamento de melhor ajuste para chamadas de invocação de plataforma usando o DllImportAttribute.BestFitMapping campo. Um valor definido pela plataforma invocar campo substitui todos os níveis de BestFitMappingAttribute.

Você pode usar o segundo parâmetro para gerar uma exceção não mapeável caracteres de controle. O valor padrão para o ThrowOnUnmappableChar campo é false, o tempo de execução de tempo que desativa lançar uma exceção encontra um caractere Unicode que deve ser convertido para o '?' Caractere ANSI. Mesmo se o mapeamento de melhor ajuste é true, caracteres não mapeável geram uma exceção quando o ThrowOnUnmappableChar campo é true. Para reforçar a segurança, você pode alternar o primeiro parâmetro para false e o segundo parâmetro para true. Esta combinação de configurações de parâmetro ativa o mapeamento de melhor ajuste desativado, mas permite que o mecanismo geradoras de exceções como uma precaução de segurança.

Aviso

Você não pode alterar os valores padrão fornecidos pelo BestFitMappingAttribute ao passar uma matriz gerenciada cujos elementos é caracteres ANSI ou LPSTRs para uma matriz segura não gerenciada. Mapeamento de melhor ajuste está sempre habilitado e nenhuma exceção pode ser lançada. Lembre-se de que essa combinação pode comprometer o modelo de segurança.

Exemplos

O exemplo a seguir mostra como desabilitar o mapeamento de ajuste recomendado e lançar uma exceção durante a conversão de caracteres Unicode para o '?' Caractere ANSI. Configuração BestFitMappingAttribute parâmetros dessa maneira proporciona uma medida adicional de segurança.

[BestFitMapping(false, ThrowOnUnmappableChar = true)]
interface IMyInterface1
{
     //Insert code here.
}
<BestFitMapping(False, ThrowOnUnmappableChar := True)> _
Interface IMyInterface1
     'Insert code here.
End Interface
[BestFitMapping(false, ThrowOnUnmappableChar = true)]
interface class IMyInterface1
{
     //Insert code here.
};

Informações de Versão

Plataforma Universal do Windows
Disponível desde 8
.NET Framework
Disponível desde 1.1
Biblioteca de Classes Portátil
Com suporte no: plataformas portáteis do .NET
Windows Phone
Disponível desde 8.1

Acesso thread-safe

Quaisquer membros estáticos públicos ( Compartilhado no Visual Basic) desse tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Confira Também

BestFitMapping
Namespace System.Runtime.InteropServices
marshaling de interoperabilidade

Retornar ao início