2014-05-14 10 views
16

Una query linq che restituisce un tipo anonimo genera il seguente errore quando viene eseguita.Nome anonimo Collisione

The type '<>f__AnonymousType9<Name,Value>' exists in both  
'Customer.CustomerWeb.Presentation.dll' and 'Customer.CustomerContext.dll' 

Utilizzando JetBrains dotPeek sono stato in grado di trovare che c'è sono 2 classi compilatore generato che si scontrano.

Customer.CustomerContext.dll

internal sealed class <>f__AnonymousType9<<PayrollSiteID>j__TPar, <IsActive>j__TPar> 

Customer.CustomerWeb.Presentation.dll

internal sealed class <>f__AnonymousType9<<Name>j__TPar, <Value>j__TPar> 

Entrambe le classi generate sono nella radice namespace. Esiste un modo per dirigere Anonymous Type classes in un determinato spazio dei nomi su ciascun assembly? La soluzione semplice consiste nell'aggiungere una terza variabile a una delle query anonime, tuttavia si tratta di un problema più grave.

+1

Non hai mostrato le query, ma un'altra semplice soluzione è sicuramente quella di creare un tipo non anonimo. –

+2

È questo errore di compilazione? –

+1

@SriramSakthivel Questo è un errore di runtime. –

risposta

1

Penso che si desidera qualcosa di simile a quanto segue, in cui si aggiunge il utilizzando istruzione all'interno del namespace per dare la preferenza a risoluzione dei nomi:

using Customer.CustomerContext; 
namespace yourNameSpace 
{ 
    using Customer.CustomerWeb.Presentation; //Where f__AnonymousType9<Name,Value> exists 
} 
0

Dai commenti

si traduce in un StackOverflow. Per ottenere The type '<>f__AnonymousType9<Name,Value>' exists in both
'Customer.CustomerWeb.Presentation.dll' and 'Customer.CustomerContext.dll'
devo eliminare un punto di interruzione prima del crash . Controllo la variabile è quando ricevo il messaggio

La collisione namespace non è il problema, la sua causa il debugger per esplodere quando si sta cercando di valutare la variabile, ma non vedo come si potrebbe causare un StackOverflow. Devi a) guardare più da vicino il linq per capire dove hai qualche ricorsione casuale o b) postare una porzione della traccia dello stack in modo che possiamo aiutarti a rintracciarlo.