2014-06-05 16 views
5

C# meclisleri arasında bir ad çakışması gidermek için, ben bir Alias ​​NLog birini verdi: ArtıkHarici takma adlar C# içinde hangi amaca hizmet eder?

enter image description here

, ben içinde bir ad referans verebilmek montaj şöyle:

public class Logger : NLog::NLog.LogReceiverService 
{ 
    // ... 
} 

Ancak, bu dosyamın en üstünde extern alias anahtar sözcüğünü kullanana kadar derlenmez:

extern alias NLog; 

Sorum:

extern alias kelime hangi amaca hizmet ediyor? NLog::NLog.LogReceiverService, montaj takma adını, isim alanını ve atıfta bulunduğum türü tamamen ayırmak için yeterli olmaz mı?

+1

* Not: * Evet, aynı tam türüne sahip iki derlemeler belirsizliği nasıl özetlemektedir birçok StackOverflow mesajlar yanı sıra blog makaleleri vardır İşte

extern takma referans malzemedir. Bunların hepsi temelde diyorlar * extern alias anahtar sözcüğünü kullan *, ama * neden * demez. Benim sorum, "Alias ​​::" yeterli olduğunda derleyicinin * extern alias * anahtar sözcüğüne neden ihtiyaç duyduğudur. –

cevap

4

Aliases özelliğinin referans üzerinde ayarlanması, yalnızca bu takma ad olarak projenin ilk yüklenme referansları yüklenirken çalışma zamanı olarak atanacaktır. Dosyanızdaki bu takma montaj referansını kullanabilmek için, bu takma adı bulmak için derleyici direktiflerini belirleyen external alias anahtar sözcüğü ile kullanacağınızı belirtmelisiniz.

Bir tür küresel takma adının olacağını düşünürdünüz, ancak takma ad üzerinde yapılan bir performans isabeti nedeniyle açık takma ad kullanımını zorladıklarını düşünüyorum. http://msdn.microsoft.com/en-us/library/ms173212.aspx

İlgili konular