DllImportAttribute.BestFitMapping Campo
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Habilita ou desabilita o comportamento de mapeamento mais adequado ao converter caracteres Unicode em caracteres ANSI.
public: bool BestFitMapping;
public bool BestFitMapping;
val mutable BestFitMapping : bool
Public BestFitMapping As Boolean
Valor do campo
Exemplos
Em alguns casos, os desenvolvedores do Visual Basic usam o DllImportAttribute, em vez da Declare
instrução , para definir uma função DLL no código gerenciado. Definir o BestFitMapping campo é um desses casos. O exemplo a seguir mostra como aplicar a segurança de mapeamento de caracteres mais estrita a definições de método de invocação de plataforma especificando o conjunto de caracteres ANSI, desabilitando o melhor comportamento de mapeamento de ajuste e lançando uma exceção em caracteres Unicode não mapeados.
[DllImport("My.dll", CharSet = CharSet::Ansi,
BestFitMapping = false,
ThrowOnUnmappableChar = true)]
int SomeFuncion2(int parm);
[DllImport("My.dll", CharSet = CharSet.Ansi,
BestFitMapping = false,
ThrowOnUnmappableChar = true)]
internal static extern int SomeFuncion2(int parm);
<DllImport("My.dll", CharSet:=CharSet.Ansi,
BestFitMapping:=False,
ThrowOnUnmappableChar:=True)>
Friend Shared Function SomeFuncion2(parm As Integer) As Integer
End Function
Comentários
Se true
, o comportamento de mapeamento de melhor ajuste está habilitado; caso contrário, o mapeamento de melhor ajuste será desabilitado. O BestFitMapping campo é true
por padrão. As configurações desse campo substituem as configurações de qualquer nível para o System.Runtime.InteropServices.BestFitMappingAttribute atributo.
Cuidado
Determinados caracteres Unicode são convertidos em caracteres perigosos, como o caractere de barra invertida '\', que pode alterar inadvertidamente um caminho. Ao definir o ThrowOnUnmappableChar campo true
como , você pode sinalizar a presença de um caractere inaplicativo para o chamador lançando uma exceção.
Cuidado
Não é possível alterar os valores padrão fornecidos pelos BestFitMapping campos e ThrowOnUnmappableChar ao passar uma matriz gerenciada cujos elementos são ANSI Chars ou LPSTRs para uma matriz segura não gerenciada. O mapeamento de melhor ajuste está sempre habilitado e nenhuma exceção é gerada. Lembre-se de que essa combinação pode comprometer seu modelo de segurança.