DllImportAttribute.ThrowOnUnmappableChar 字段

定义

启用或禁用在遇到已被转换为 ANSI“?”字符的无法映射的 Unicode 字符时引发异常。

public: bool ThrowOnUnmappableChar;
public bool ThrowOnUnmappableChar;
val mutable ThrowOnUnmappableChar : bool
Public ThrowOnUnmappableChar As Boolean 

字段值

示例

在某些情况下,Visual Basic 开发人员使用 DllImportAttribute 在托管代码中定义 DLL 函数,而不是使用 Declare 语句。 设置 ThrowOnUnmappableChar 字段便是这其中的一种情况。 下面的示例演示如何通过以下方法将最严格的字符映射安全应用到平台调用方法定义: 指定 ANSI 字符集,禁用最佳匹配映射行为,并在未映射的 Unicode 字符上引发异常。

[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

注解

true 指示每次互操作封送处理器转换不可应用字符时引发异常; false 以指示字段 ThrowOnUnmappableChar 已禁用。 默认情况下,此字段为 false

注意

某些 Unicode 字符会转换为危险字符,例如反斜杠“\”字符,这可能会无意中更改路径。 通过将 字段设置为 ThrowOnUnmappableChartrue,可以通过引发异常向调用方发出无法应用字符的信号。

注意

将元素为 ANSI Chars 或 LPSTR 的托管数组传递到非托管安全数组时,不能更改 和 ThrowOnUnmappableChar 字段提供的BestFitMapping默认值。 始终启用最佳匹配映射,并且不会引发异常。 请注意,此组合可能会危及安全模型。

适用于

另请参阅