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.
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
}
Dans les commentaires
il en résulte un débordement de piles. Afin d'obtenir
The type '<>f__AnonymousType9<Name,Value>' exists in both
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
'Customer.CustomerWeb.Presentation.dll' and 'Customer.CustomerContext.dll'
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.