2012-11-11 13 views
7

Ho una tale errorecosa fare se due librerie hanno esattamente le stesse classi?

errore 8 Il tipo 'System.Threading.Volatile' esiste in entrambi 'c: \ Oleg \ progetti \ MBClient \ pacchetti \ Disruptor.1.1.0 \ lib \ net40 \ Atomic .dll ' e' c: \ Programmi (x86) \ Riferimento Assiemi \ Microsoft \ Framework.NETFramework \ v4.5 \ mscorlib.dll 'C: \ Oleg \ projects \ MBClient \ MBClient \ CustomIndeces \ CompositeIndex.cs 77 40 MBClient

Non so cosa fare come nome completo non identifica esattamente quale classe utilizzare. Come risolvere questo problema?

risposta

7

È possibile assegnare un alias alla libreria in VS facendo clic con il pulsante destro del mouse sull'assieme nel proprio elenco di riferimenti, passando a Pro perties e impostando la proprietà "alias" su qualunque cosa tu voglia che sia. Quindi per utilizzare i tipi da questo assembly, si utilizza extern alias all'inizio del proprio spazio dei nomi.

Esempio:

namespace TestApp 
{ 
    extern alias Threading1; 
    using Threading1.System.Threading.Volatile; 
} 

extern alias msdn

2

È possibile utilizzare un alias quando si utilizza la libreria.

http://msdn.microsoft.com/en-us/library/sf0df423(VS.80).aspx

+0

Le informazioni di quel link presuppone che le classi sono in due namespace differenti, che non è il caso qui. –

+0

Spiacente, ho pensato che il link riguardasse la dichiarazione dell'alias esterno. –

6

forse si può definire un alias per questo spazio dei nomi, ad esempio per Timer classe si trova sui seguenti spazi dei nomi

using WinTimer = System.Windows.Forms; 
using ThreadTimer = System.Threading; 

allora si può utilizzare come,

WinTimer.Timer _tmr = new WinTimer.Timer(); 
ThreadTimer.Timer _Thrtmr = new ThreadTimer.Timer(); 
+0

non capisco cosa dovrei fare nel mio caso. entrambe le librerie hanno la classe 'System.Threading.Volatile'. – javapowered

+2

Questo non risolve il problema delle interferenze dei nomi tra due o più assiemi. Vedi la mia risposta. – Siege

Problemi correlati