Campo DllImportAttribute.BestFitMapping
Dica
The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.
Habilita ou desabilita o comportamento de mapeamento mais adequado ao converter caracteres Unicode em caracteres ANSI.
Namespace: System.Runtime.InteropServices
Assembly: mscorlib (em mscorlib.dll)
Sintaxe
public bool BestFitMapping
public:
bool BestFitMapping
val mutable BestFitMapping : bool
Public BestFitMapping As Boolean
Valor do Campo
Type: System.Boolean
Comentários
Se true, melhor ajuste mapeamento comportamento está habilitado; caso contrário, o melhor ajuste mapeamento está desabilitado. O BestFitMapping campo é true por padrão. As configurações para esse campo substituem as configurações para qualquer níveis de System.Runtime.InteropServices.BestFitMappingAttribute atributo.
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 fornecer 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. 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.
Aviso
Determinados caracteres Unicode são convertidos em caracteres perigosos, como a barra invertida ' \' caractere, que pode alterar inadvertidamente um caminho. Definindo o ThrowOnUnmappableChar campo true, você pode indicar a presença de um caractere não mapeável ao chamador lançando uma exceção.
Aviso
Você não pode alterar os valores padrão fornecidos pelo BestFitMapping e ThrowOnUnmappableChar campos 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 é lançada. Lembre-se de que essa combinação pode comprometer o modelo de segurança.
Exemplos
Em alguns casos, os desenvolvedores do Visual Basic usam o DllImportAttribute, em vez do Declare instrução, para definir uma função de DLL no código gerenciado. Definindo o BestFitMapping campo é um dos casos. O exemplo a seguir mostra como aplicar o mais rígido definições de método de invocação de segurança de mapeamento de caractere para uma plataforma especificando o conjunto de caracteres ANSI, desabilitando melhor o comportamento de mapeamento de ajuste e gerar uma exceção em caracteres de Unicode não mapeados.
[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);
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
Silverlight
Disponível desde 2.0
Windows Phone Silverlight
Disponível desde 8.0
Windows Phone
Disponível desde 8.1
Confira Também
CharSet
BestFitMappingAttribute
Classe DllImportAttribute
Namespace System.Runtime.InteropServices
marshaling de interoperabilidade
Retornar ao início