Nom De Type Anonyme Collision

une requête linq qui renvoie un type anonyme génère l'erreur suivante lorsqu'elle est exécutée.

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

en utilisant JetBrains dotPeek j'ai pu trouver qu'il y a deux classes générées par le compilateur qui entrent en collision.

Client.CustomerContext.dll

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

Client.CustomerWeb.Présentation.dll

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

les Deux classes générées sont à la racine namespace. Est il possible que je peux direct Anonymous Type classes pour un espace de noms particulier sur chaque assemblée? La solution facile est d'ajouter une troisième variable à l'un des les requêtes anonymes, cependant ce n'est plus un hack.

17
demandé sur elbaulp 2014-05-14 17:42:20

2 réponses

je pense que vous voulez quelque chose comme le suivant, où vous ajoutez à l'aide de votre déclaration à l'intérieur de l'espace de noms à donner la préférence dans la résolution de nom:

using Customer.CustomerContext;
namespace yourNameSpace
{
    using Customer.CustomerWeb.Presentation; //Where f__AnonymousType9<Name,Value> exists
}
1
répondu n4gy3 2014-05-20 17:47:02

Dans les commentaires

il en résulte un débordement de piles. Afin d'obtenir The type '<>f__AnonymousType9<Name,Value>' exists in both

'Customer.CustomerWeb.Presentation.dll' and 'Customer.CustomerContext.dll'
j'ai pour supprimer un point d'arrêt avant la accident. L'inspection de la variable, c'est quand je reçois ce message

la collision de l'espace de noms n'est pas votre problème, Cela fait exploser le débogueur quand il essaye d'évaluer la variable mais je ne vois pas comment cela pourrait éventuellement causer un débordement de StackOverflow. Vous devez soit a) regarder de plus près à la linq pour savoir où vous avoir une certaine récursion accidentelle ou B) postez une partie de la trace de la pile afin que nous puissions vous aider à le traquer.

0
répondu Yaur 2014-05-20 23:00:16