DllImportAttribute.BestFitMapping Поле
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Включает или отключает оптимальное поведение сопоставления при преобразовании символов Юникода в символы ANSI.
public: bool BestFitMapping;
public bool BestFitMapping;
val mutable BestFitMapping : bool
Public BestFitMapping As Boolean
Значение поля
Примеры
В некоторых случаях разработчики Visual Basic используют DllImportAttribute вместо инструкции Declare для определения функции DLL в управляемом коде.
BestFitMapping Установка поля является одним из этих случаев. В следующем примере показано, как применить строгое сопоставление символов к определениям метода вызова платформы, указав набор символов ANSI, отключив оптимальное поведение сопоставления и создав исключение для несопоставленных символов Юникода.
[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 .
Предостережение
Некоторые символы Юникода преобразуются в опасные символы, такие как символ обратной косой черты \, который может случайно изменить путь. Задав ThrowOnUnmappableChar поле в значение true, можно сигнализировать о присутствии неуправляемого символа вызывающему объекту путем вызова исключения.
Предостережение
Нельзя изменить значения по умолчанию, предоставляемые полями BestFitMapping , ThrowOnUnmappableChar при передаче управляемого массива, элементы которого — ANSI Chars или LPSTRs в неуправляемый безопасный массив. Сопоставление лучшего соответствия всегда включено, и исключение не возникает. Имейте в виду, что это сочетание может скомпрометировать модель безопасности.