2010-04-09 4 views
2

Мне просто нужно уточнить, что такое управляемый прототип.Что такое управляемый прототип?

Я считаю, что это метод, который использует атрибут DllImport и имеет метод, как так:

[DllImport("user32.dll")] 
     private static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type); 

ли это всегда означает это то есть вы должны иметь атрибут DllImport и затем метод signiture который является частным статический extern ???

Приветствия

ответ

3

Функция прототип функции, которая объявлена ​​только как способ для компилятора, чтобы работать, как позвонить в какой-то код, без того, что «какой-то код» доступен, чтобы смотреть на, так что без прототип он будет летать слепым, связанным с типами аргументов и т. д.

Итак, для функции P/Invoke, т.е. вызывающие функции в родных DLL с управляемого языка, такого как C#, да, вам нужны эти прототипы, если вы не можете найти уже существующий класс в .NET, который либо обертывает эту функцию, либо выполняет DLL, либо реализует аналогичные функции в чистом управляемом коде.

И да, вам нужен атрибут [DllImport...], чтобы указать, с какой DLL есть эта функция, и она должна быть статичной и внешней, но необязательно должна быть частной, хотя обычно это происходит, как правило, потому, что вы затем обертываете это в управляемом классе, чтобы облегчить использование остальной части вашего кода.

Смежные вопросы