DllImportAttribute.ExactSpelling Поле
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет, вызывает ли CharSet поле среду CLR поиск неуправляемой библиотеки DLL для имен точек входа, отличных от указанного.
public: bool ExactSpelling;
public bool ExactSpelling;
val mutable ExactSpelling : bool
Public ExactSpelling As Boolean
Значение поля
Примеры
В некоторых случаях разработчики Visual Basic используют DllImportAttribute вместо использования инструкции Declare для определения функции DLL в управляемом коде.
ExactSpelling Установка поля является одним из этих случаев.
[DllImport("user32.dll", CharSet = CharSet::Ansi, ExactSpelling = true)]
int MessageBoxA(IntPtr hWnd, String^ Text,
String^ Caption, unsigned int Type);
internal static class NativeMethods
{
[DllImport("user32.dll", CharSet = CharSet.Unicode,
ExactSpelling = true)]
internal static extern int MessageBoxW(
IntPtr hWnd, string lpText, string lpCption, uint uType);
}
Friend Class NativeMethods
<DllImport("user32.dll", ExactSpelling:=False)>
Friend Shared Function MessageBox(hWnd As IntPtr, lpText As String,
lpCaption As String, uType As UInteger) As Integer
End Function
End Class
Комментарии
Если false, имя точки входа, добавленное с буквой A, вызывается, когда DllImportAttribute.CharSet поле заданоCharSet.Ansi, и имя точки входа, добавленное с буквой W, вызывается, когда DllImportAttribute.CharSet поле задано.CharSet.Unicode Как правило, управляемые компиляторы задают это поле.
В следующей таблице показана связь между CharSet полями и ExactSpelling значениями по умолчанию, введенными языком программирования. Вы можете переопределить параметр по умолчанию, но сделать это с осторожностью.
| Язык | ANSI (Американский национальный институт стандартов) | Юникод | Auto |
|---|---|---|---|
| Visual Basic | ExactSpelling:=True | ExactSpelling:=True | ExactSpelling:=False |
| C# | ExactSpelling=false | ExactSpelling=false | ExactSpelling=false |
| C++ | ExactSpelling=false | ExactSpelling=false | ExactSpelling=false |