DllImportAttribute.ThrowOnUnmappableChar 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 a geração de uma exceção em um caractere Unicode não mapeável que é convertido em um caractere "?" ANSI.
public: bool ThrowOnUnmappableChar;
public bool ThrowOnUnmappableChar;
val mutable ThrowOnUnmappableChar : bool
Public ThrowOnUnmappableChar As Boolean
Valor do campo
Exemplos
Em alguns casos, os desenvolvedores do Visual Basic usam o DllImportAttribute para definir uma função DLL no código gerenciado, em vez de usar a Declare
instrução . Definir o ThrowOnUnmappableChar campo é um desses casos. O exemplo a seguir mostra como aplicar a segurança de mapeamento de caracteres mais rigorosa 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
true
para indicar que uma exceção é gerada sempre que o marshaler de interoperabilidade converte um caractere inaplicativo; false
para indicar que o ThrowOnUnmappableChar campo está desabilitado. Esse campo é false
por padrão.
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 como true
, 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.