2009-03-06 11 views
14

Tôi đã đi lên chống lại các kịch bản không khi tôi tham khảo hai hội đồng bên ngoài mà cả hai đều có cùng một không gian tên và loại tên. Khi tôi cố gắng sử dụng loại, trình biên dịch ném một lỗi mà nó không thể giải quyết cái nào tôi muốn sử dụng.Làm thế nào để có được toán tử bí danh không gian tên :: để làm việc theo C#?

Tôi thấy rằng C# cung cấp cơ chế sử dụng bí danh để tham khảo. Thậm chí bạn có thể chỉ định các bí danh này qua cửa sổ Property của tham chiếu trong Visual Studio 2008. Làm cách nào để sử dụng bí danh này trong mã của tôi? Theo tôi được biết, tôi nên sử dụng các nhà điều hành ::, nhưng nó không thành công với các lỗi sau:

CS0432 - Alias not found

Các . điều hành thông thường thất bại là tốt.

Trong cửa sổ đầu ra, tôi thấy trình biên dịch nhận được bí danh được truyền chính xác trong dòng lệnh của nó.

Bất kỳ gợi ý nào về những gì tôi có thể thử tiếp theo đều được đánh giá cao.

+0

bạn có thể mở rộng trên cái này không? Nó hoạt động nếu bạn gõ toàn bộ không gian tên – Grzenio

Trả lời

16
extern alias alias1; 
using alias1::Namespace; 
+0

Điều này có thể được sử dụng cho một phương pháp để giải quyết xung quanh CS0433 (lỗi trình biên dịch C#). http://msdn.microsoft.com/en-us/library/64wh5743(VS.100).aspx – RandomNickName42

+0

Tôi vừa nhận thấy, đó là 1 số lỗi từ câu hỏi "Gortok" ở đây, vui nhộn. – RandomNickName42

+2

Và bạn cũng cần phải thay đổi thuộc tính assembly-reference 'Aliases' từ "global" thành "global, alias1". – Spiralis

3

Hãy thử điều này:

extern alias asm1; 
extern alias asm2; 

namespace Client 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      asm1.MyNs.MyClass mc1 = null; 
      asm2.MyNs.MyClass mc2 = null; 
     } 
    } 
} 

Và thêm global,asm1 tài liệu tham khảo dự án cho assembly1 và global,asm2 cho assembly2

3

Tôi nghĩ rằng bạn cần phải sử dụng một extern alias. Anson Horton có một blog hay về vấn đề này và cách sử dụng bí danh bên ngoài để khắc phục sự cố.

-1

Khi bạn tham khảo một số lắp ráp trong dự án, nó có bí danh mặc định là "toàn cục". Khi bạn thêm bí danh khác cho hội đồng đó, ví dụ: "Toàn cầu, AssemblyA", bạn sẽ tham khảo nó như thế này:

using SomeTypeAlias = AssemblyA::Company.Product.SomeType; 

hay: ". Các nhà điều hành thông thường thất bại cũng"

void SomeMethod(AssemblyA::Company.Product.SomeType someType) { ... }