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