2009-07-01 4 views
12

Ngoài sự tò mò, tôi đã tạo 2 hội đồng có cả một lớp (Class1) với cùng một không gian tên chính xác (Library1). Sau đó tôi tạo một máy khách khác tham chiếu đến 2 assembly đó và cố gắng tạo một thể hiện của Class1.Sử dụng các loại tên và không gian tên giống nhau trong 2 hội đồng .NET

Trình biên dịch, không ngạc nhiên, mang lại cho tôi một lỗi biên dịch về tham chiếu mơ hồ. Có cách nào để xác định rõ ràng loại trong hội đồng tôi muốn sử dụng để tránh sự mơ hồ?

Lưu ý: Tôi biết điều này hiếm khi xảy ra nếu xảy ra. Nó chỉ là một câu hỏi tò mò về tính năng ngôn ngữ.

Trả lời

10

Tôi nghĩ bạn nên sử dụng extern alias để bọc các vùng tên lắp ráp bên ngoài vùng tên chung. Đây là cách:

  1. Trong dự án tham chiếu đến 2 cụm, chọn một trong số họ dưới Tài liệu tham khảo, và trong cửa sổ Properties thay đổi giá trị biệt hiệu từ global đến, nói, global, Library1a.

  2. Làm tương tự cho tham chiếu khác, nhưng đặt cho nó một bí danh khác-- hãy đi với global, Library1b cho ví dụ của chúng tôi.

  3. Chèn extern alias Library1a; và/hoặc extern alias Library1b; làm 2 dòng đầu tiên của bất kỳ lớp nào tiêu thụ hội đồng.

  4. Khi truy cập vào các thành viên không rõ ràng, hãy hội đủ điều kiện không gian tên với Library1a. hoặc Library1b.. Ví dụ: Library1a.Library1.Class1...Library1b.Library1.Class1...

1

Nó xảy ra trong thực tế và là một nỗi đau thực sự, bí danh bên ngoài có thể không phải lúc nào giải quyết vấn đề. Dưới đây là một ví dụ về nơi nó là một vấn đề Duplicate Namepsaces.