2008-09-10 31 views

Trả lời

1

Bạn có thể tạo một thể hiện của một lớp từ một đối tượng sử dụng Loại Activator.CreateInstance, để có được tất cả các loại trong một dll bạn có thể sử dụng Assembly.GetTypes

1

Hãy nhìn vào những liên kết này:

http://www.java2s.com/Code/CSharp/Development-Class/Createanobjectusingreflection.htm

http://msdn.microsoft.com/en-us/library/k3a58006.aspx

bạn về cơ bản sử dụng phản ánh để nạp một assembly, sau đó tìm một loại mà bạn đang quan tâm. một khi bạn có các loại, bạn có thể hỏi để tìm thấy nó là nhà thầu hoặc khác gặp hods/tài sản. Một khi bạn có hàm tạo, bạn có thể gọi nó. Dễ dàng!

2

System.Reflection.Assembly là lớp bạn sẽ muốn sử dụng. Nó chứa nhiều phương thức để lặp qua các kiểu có chứa một DLL người dùng. Bạn có thể lặp qua từng lớp, có lẽ xem nếu nó được thừa hưởng từ một giao diện cụ thể, vv

http://msdn.microsoft.com/en-us/library/system.reflection.assembly_members.aspx

tra Assembly.GetTypes() phương pháp để nhận được danh sách các loại, hoặc Assembly.GetExportedTypes() cho chỉ những người nào.

1

Như nó đã được nói, bạn cần phải ping không gian tên System.Reflection.

Nếu bạn biết trước vị trí/tên của tệp DLL bạn muốn tải, bạn cần lặp lại thông qua Assembly.GetTypes().

Trong mã giả, nó sẽ trông giống như sau:

Tạo và lắp ráp đối tượng.

Lặp lại tất cả các loại có trong hội đồng.

Khi bạn tìm thấy thứ bạn đang tìm kiếm, hãy gọi nó (CreateInstance)…

Sử dụng nó một cách khôn ngoan.

;)

Tôi có rất nhiều mã Reflection nếu bạn muốn có một cái nhìn xung quanh, nhưng nhiệm vụ là thực sự đơn giản và có ít nhất một chục bài báo với các mẫu hiện có trong tự nhiên. (Aka Google). Mặc dù vậy, MSDN là bạn của bạn cho tham chiếu phản chiếu.

Các vấn đề liên quan