2012-06-26 14 views
16

Uygulamamın (üçüncü taraf) 2 dll dosyasını içe aktardım Artık her ikisinin de aynı ada sahip bir ad alanı var. Örneğin A.B ve her ikisinde de aynı ada sahip bir sınıf var. Şimdi, bunlardan birinin bir örneğini oluşturmak istiyorum, ancak ad alanı ve sınıf adları aynı olduğundan, derleyici belirsizleşiyor. Yerinde kullanılan cadı dll'yi nasıl belirleyebilirim?2 dll'de ad alanı adlarıyla belirsiz sınıf

namespace Foo 
{ 
    public class Bar 
    { 
    } 
} 

Şimdi tüketen projede size referanslar ek bir takma tanımlayabiliriz:

+1

Eğer cevaplar işe yaramıyorsa, o zaman işinize yaramazsınız :) – swapneel

+0

Neyse ki bunlardan biri çalışıyor :-) –

cevap

30

Diyelim ki ikisi de aynı ad alanında aynı sınıfını tanımlamak o 2 meclisleri (ClassLibrary1.dll ve ClassLibrary2.dll) sahip olduğunu varsayalım sınıf kütüphanesi:

enter image description here

Ve şimdi derleyici anlam kargaşasını gidermek için aşağıdaki yapabilirdi:

extern alias lib1; 
extern alias lib2; 

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

Bu, benim yaşadığım bir soruna benziyordu ama benim durumumda, kendi kodumdu (küçük bir yardımcı sınıf) Ben bir EXE tarafından kullanılan sırayla 2 farklı DLL'de kullanmak gerekiyordu. Darin'in çözümü harika çalıştı! Teşekkürler. –

-1

Sadece küçük bir geliştirme veya gelişmiş bilgi: Birden fazla kullanımınız varsa, "extern alias lib1;" - satırının bu kullanımlardan birincisi olması gerekir (Ama ayrıca MS VS sizi bu konuda bilgilendirir).

+0

cevabınız sorunuza cevap vermiyor. Lütfen soruyu dikkatli bir şekilde okuyunuz –