2012-06-26 30 views
16

Tôi đã nhập 2 dll vào ứng dụng của tôi (bên thứ ba) Bây giờ cả hai đều có một không gian tên có cùng tên. Ví dụ: A.B và cả hai có một lớp học có cùng tên. Bây giờ tôi muốn tạo một thể hiện của một trong số chúng, nhưng vì không gian tên và tên lớp giống nhau, trình biên dịch sẽ không rõ ràng. Làm cách nào để chỉ định dll phù thủy được sử dụng tại địa điểm?lớp không rõ ràng với tên không gian tên trong 2 dlls

+1

nếu các câu trả lời dưới đây không hoạt động thì bạn đã bị nghiêng :) – swapneel

+0

May mắn là một trong số chúng hoạt động :-) –

Trả lời

30

Giả sử rằng bạn có 2 cụm (ClassLibrary1.dllClassLibrary2.dll) rằng cả hai xác định cùng lớp trong không gian tên giống nhau:

namespace Foo 
{ 
    public class Bar 
    { 
    } 
} 

Bây giờ trong dự án tốn nhiều bạn có thể xác định một bí danh thêm trong tài liệu tham khảo của thư viện lớp:

enter image description here

Và bây giờ bạn có thể làm như sau để giúp trình biên dịch disambiguate:

extern alias lib1; 
extern alias lib2; 

class Program 
{ 
    static void Main() 
    { 
     var barFromLib1 = new lib1::Foo.Bar(); 
     var barFromLib2 = new lib2::Foo.Bar(); 
    } 
} 
+0

Điều này tương tự như một vấn đề tôi gặp phải, trong trường hợp của tôi, đó là mã của riêng tôi (một lớp trợ giúp nhỏ) mà tôi cần sử dụng trong 2 tệp DLL khác nhau mà lần lượt được sử dụng bởi một EXE. Giải pháp của Darin hoạt động rất tốt! Cảm ơn. –

-1

Chỉ cần một chút cải tiến hoặc thông tin nâng cao: Nếu bạn có nhiều cách sử dụng, "extern alias lib1;" - dòng phải là người đầu tiên sử dụng (Nhưng cũng MS VS thông báo cho bạn về điều đó).

+0

câu trả lời của bạn không cung cấp câu trả lời cho câu hỏi.Vui lòng đọc kỹ câu hỏi –

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