2010-08-09 20 views

Trả lời

10

Assembly.Load là tham chiếu động vì bạn đang tự động tải một DLL bên ngoài vào thời gian chạy. Bạn sẽ xem xét một tham chiếu tĩnh giống như khi bạn thêm một tham chiếu đến một dự án .NET và xây dựng dự án với tham chiếu đó tại chỗ.

EDIT:

Từ Doc MSDN:

Các hồ sơ trình biên dịch tĩnh tài liệu tham khảo trong siêu dữ liệu lắp ráp manifest tại thời gian xây dựng.

Hmmm, không chắc về bản thân này. Tôi sẽ giữ câu trả lời của tôi ở đây ngay bây giờ, với hy vọng nhận được nhiều nhận xét chỉnh sửa hơn hoặc thấy câu trả lời tốt hơn.

+0

Điều này không hoàn toàn đúng Tôi tin rằng ... tham chiếu dyanamic như đã nêu trong MSDN (http://msdn.microsoft.com/en-us/library/yx7xezcf (VS.71) .aspx) tham chiếu tham chiếu động khi tải một tham chiếu chỉ với đủ thông tin mà thời gian chạy phải tìm kiếm assembly đang được nạp. Với tham chiếu tĩnh, vị trí của các assembly (GAC, direcotry ứng dụng, vv) được biết và vẫn có thể được thực hiện bằng Assembly.load. – Achilles

0

Tham chiếu dyanamic như được nêu trong MSDN (http://msdn.microsoft.com/en-us/library/yx7xezcf(VS.71).aspx) tham chiếu tham chiếu động khi tải một tham chiếu chỉ với đủ thông tin mà thời gian chạy phải tìm kiếm assembly đang được tải. Với tham chiếu tĩnh, vị trí của các assembly (GAC, direcotry ứng dụng, vv) được biết và vẫn có thể được thực hiện bằng Assembly.load.

2

Trong tham chiếu đến:

ý nghĩa là gì và gợi ý kịch bản để sử dụng một trong hai?

Thông thường, nếu tôi sử dụng Assembly.Load(), đó là vì tôi đang phát triển một hệ thống có thể cắm được. Tham chiếu động tạo thuận lợi cho việc bao gồm các hội đồng không nhất thiết phải là một phần của bản dựng của tôi.

Các loại lập tức từ một hội đồng được nạp động đòi hỏi ít nhất một số phản ánh. Lượng phản xạ cần thiết có thể được giảm thiểu bằng cách đảm bảo rằng các kiểu được nạp động thực hiện một số giao diện hoặc lớp cơ sở đã biết (từ một assembly được tải tĩnh).

Tóm lại, có rất nhiều công việc để sử dụng các cụm được nạp động; tuy nhiên, làm như vậy có thể làm cho ứng dụng linh hoạt hơn bằng cách cho phép người dùng phát triển các trình cắm thêm. Chỉ cần cân nhắc sự cân bằng giữa tính linh hoạt dự đoán của các tham chiếu động (có thể không phải là một yêu cầu) và hỗ trợ thiết kế thời gian từ Visual Studio cho các tham chiếu tĩnh.

Thực tiễn đáng xem xét nếu xây dựng kiến ​​trúc trình cắm thêm là tải các assembly trong AppDomain của riêng chúng. Làm như vậy cho phép bạn có quyền kiểm soát tốt hơn các quyền bảo mật của các assembly mà bạn có thể không hoàn toàn tin tưởng, và cung cấp lợi ích bổ sung mà các assembly có thể được dỡ bỏ tại thời gian chạy. Cá nhân, tôi thấy làm việc với AppDomains để được thâm dụng lao động; tuy nhiên, nếu các lợi ích được yêu cầu, nó là tốt để biết rằng AppDomains đang có.

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