DllImportAttribute.BestFitMapping 字段

定义

将 Unicode 字符转换为 ANSI 字符时,启用或禁用最佳映射行为。

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

字段值

示例

在某些情况下, Visual Basic 开发人员使用 DllImportAttribute 代替 Declare 语句在托管代码中定义 DLL 函数。 设置 BestFitMapping 字段便是这其中的一种情况。 下面的示例演示如何通过以下方法将最严格的字符映射安全应用到平台调用方法定义: 指定 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为 ,则启用最佳拟合映射行为;否则禁用最佳拟合映射。 默认情况下, BestFitMapping 字段为 true 。 此字段的设置将替代 属性的任何级别设置 System.Runtime.InteropServices.BestFitMappingAttribute

注意

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

注意

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

适用于

另请参阅