2009-03-06 18 views
14

Her ikisi de aynı ad alanı ve tür adlarına sahip iki harici derleme başvurduğumda, olası bir senaryoya karşı geldim. Türü kullanmaya çalıştığımda, derleyici kullanmak istediğimi çözemeyeceği bir hata atar.Ad alanı takma adı operatörü nasıl elde edilir :: C# altında çalışmak için?

C# referansları için takma adları kullanmak için bir mekanizma olduğunu görüyorum. Bu takma adları Visual Studio 2008'deki bir referansın Property penceresinden de belirtebilirsiniz. Bu takma adı kodumda nasıl kullanılır? Anlıyorum, ben :: operatörü kullanılarak yapılmalıdır, ancak aşağıdaki hatayla başarısız: zamanki . operatör de başarısız

CS0432 - Alias not found

.

Çıkış penceresinde, derleyicinin, takma adın komut satırında doğru şekilde geçtiğini görüyorum.

Bir sonraki adımı deneyebileceğimiz herhangi bir işaretçi büyük beğeni topluyor.

+0

Bu konuda genişletebilir misin? Tüm isim alanını – Grzenio

cevap

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

yazarsanız, bu işe yarar. Bu, CS0433 (C# derleyici hatası) etrafında geçici çözüm yönteminde kullanılabilir. http://msdn.microsoft.com/en-us/library/64wh5743(VS.100).aspx – RandomNickName42

+0

Fark ettim, "Gortok'un" sorusundan 1 hata numarası, komik. – RandomNickName42

+2

Ayrıca, "aliases" derleme başvurusu özelliğini "global" den "global, alias1" olarak değiştirmeniz gerekir. – Spiralis

3

bu deneyin:

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; 
     } 
    } 
} 

Ve assembly2

senin bir extern takma kullanmaya ihtiyacım var
3

için assembly1 ve global,asm2 proje referansına global,asm1 ekleyin. Anson Horton, bu sorunu çözmek için iyi bir blog ve extern alias nasıl kullanılır.

-1

Projedeki bazı derleme başvuruda bulunduğunuzda, varsayılan "aliexpress" takma adı vardır. Bu montaj için başka bir takma ad eklediğinizde, ör. "AssemblyA küresel", bunu şöyle başvuracağı:

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

veya: ". Her zamanki operatör de başarısız"

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