Compartilhar via


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