Từ khoá extern chỉ ra rằng phương thức được gọi tồn tại trong một thư viện DLL.
Một công cụ được gọi là "tlbimp.exe" có thể tạo ra một wrapper assambly cho phép C# tương tác với các DLL như nó đã là một thực thể .NET.
Các thư viện DLL cũ hơn sẽ không thể làm việc được với phương pháp này. Thay vào đó, bạn phải explicitally nói với trình biên dịch DLL những gì để gọi, các phương thức để gọi và những gì các tham số để pass. Kiểu tham số là rất quan trọng, bạn cũng có thể xác định các explicitally nhập các tham số được thông qua tới phương thức.
Ví dụ:
using System;
using System.Runtime.InteropServices;
namespace ExternKeyword
{
public class Program
{
static void Main()
{
NativeMethods.MessageBoxEx(IntPtr.Zero, "Hello there", "Caption here",0,0);
}
}
public class NativeMethods
{
[DllImport("user32.dll")]
public static extern MessageBoxEx(IntPtr hWnd, string lpText, string lpCaption, uint uType, short wLanguageId);
}
}
Câu lệnh [DllImport("user32.dll")]
thông báo với trình dịch biết được DLL nào được tham chiếu tới. Windows tìm kiếm các tập tin như được định nghĩa bởi biến môi trường PATH environment vairable, và do đó sẽ tìm kiếm những dduouongf dẫn trước khi thất bại.
Phương thức mà ta tham chiếu tới cũng là tĩnh bởi vidf DLL không thể hiểu làm thế nào để được "tạo ra". Điều này cho phép các phương thức có thể được gọi trực tiếp, thay vì instantiated và sau đó được sử dụng.
0 comments:
Đăng nhận xét