2010-05-21 12 views
6

From Jon Skeet's blog:.NET có một trình liên kết không?

Nhận xét sau có ý nghĩa gì?

// The line below only works when linked rather than 
    // referenced, as otherwise you need a cast. 
    // The compiler treats it as if it both takes and 
    // returns a dynamic value. 
    string value = com.MakeMeDynamic(10); 

Tôi hiểu việc tham chiếu hội đồng là gì. Bạn có thể tham khảo nó khi biên dịch các tệp chương trình bằng cách sử dụng/ref: switch tại dòng lệnh hoặc bạn có thể thêm tham chiếu tĩnh vào assembly trong Visual Studio.

Nhưng làm thế nào để bạn liên kết đến một hội đồng trong .NET? Ông có nghĩa là, tải lắp ráp bằng cách sử dụng Reflection (Assembly.LoadFile())? Hoặc, Win32 API LoadLibrary()? Hoặc, không. NET có một mối liên kết mà tôi chưa bao giờ nghe nói đến?

Trả lời

10

Đó là dành cho COM Interop Assemblies chính, về cơ bản. Trong .NET 4, bạn có thể tham khảo chúng như bình thường hoặc "liên kết"/"nhúng" chúng - trong trường hợp này bạn chỉ kết thúc với các bit của PIA mà bạn quan tâm đến việc nhúng vào assembly của riêng bạn.

Từ dòng lệnh, đây là tùy chọn /link: của trình biên dịch C# 4.

+0

Cảm ơn, Jon. Tôi đã hoàn thành việc đọc toàn bộ bài báo của bạn mà tôi đã liên kết, trước khi hỏi câu hỏi này. Tôi vừa đọc xong nó và một vài bài báo khác về tính năng "Không có PIA". Vì vậy, là/link: thuộc tính tương đương dòng lệnh thiết lập thuộc tính "Nhúng Interop Types" của tham chiếu assembly thành True trong Visual Studio 2010? (http://thedotnethub.blogspot.com/2009/11/clr4-no-pia.html) Ngoài ra, tùy chọn/link: có phải là tùy chọn mới được giới thiệu trong C# 4.0 không? –

+0

@Water: Vâng, đó là tương đương, và có nó mới với .NET 4 và C# 4. –

+0

Rất cám ơn rất nhiều, Jon. BTW, tôi đang đọc ấn bản đầu tiên cuốn sách của bạn "C# trong chiều sâu" và yêu thương mỗi bit của nó. –