Анонимный тип Имя Столкновение

Запрос linq, возвращающий анонимный тип, выдает следующую ошибку при выполнении.

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

Используя JetBrains dotPeek, я смог найти, что есть два сгенерированных компилятором классов, которые сталкиваются.

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>

Оба сгенерированных класса находятся в корне namespace. Есть ли способ, которым я могу направить Anonymous Type classes в конкретное пространство имен на каждой сборке? Легкое исправление заключается в добавлении третьей переменной в один из анонимных запросов, однако это скорее хак.

Ответы

Ответ 1

Я думаю, вам нужно что-то вроде следующего, где вы добавляете свой оператор using в пространство имен, чтобы придать ему предпочтение в разрешении имен:

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

Ответ 2

Из комментариев

В результате получается StackOverFlow. Чтобы получить The type '<>f__AnonymousType9<Name,Value>' exists in both
'Customer.CustomerWeb.Presentation.dll' and 'Customer.CustomerContext.dll'
, мне нужно сбросить точку останова до авария. Проверка переменной - это когда я получаю это сообщение

Столкновение пространства имен не является вашей проблемой, что приводит к тому, что отладчик взорвется, когда пытается оценить переменную, но я не вижу, как это может вызвать StackOverflow. Вам нужно либо a) более внимательно изучить linq, чтобы выяснить, где у вас есть случайная рекурсия, или b) разместить часть трассировки стека, чтобы мы могли помочь вам отследить ее.