Partilhar via


DllImportAttribute.ThrowOnUnmappableChar Campo

Definição

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.

Aplica-se a

Confira também