По предложению @TrueWill и @Marc Gravell, которые также ссылались на это сообщение в блоге
Поскольку это для модульного тестирования, вы можете использовать InternalsVisibleTo. Смотрите, анонимные типы являются внутренними, C # 4.0, будьте осторожны! Спасибо @MarcGravell за указание на то, что анонимные объекты являются внутренними!
Итог: установите отображение [assembly: InternalsVisibleTo("foo")]
, если вы хотите поделиться анонимным объектом из одной сборки в другую. В случае OP это будет вопрос установки этого в проекте контроллера MVC, ссылаясь на тестовый проект . В моем конкретном случае, наоборот (так как я передаю анонимный объект из моего тестового проекта в проект «производственный код»).
Самый простой способ использовать этот «другой проект» - это привести его к dynamic
, а затем просто использовать свойства как обычно. Это работает, никаких проблем.
Итак, суть: я чувствую, что ответ Марка Гравелла немного неправильный; это явно можно сделать
( если указанные проекты могут быть изменены вами, поэтому вы можете соответствующим образом настроить отображение InternalsVisibleTo, и это не представляет проблемы по любой другой причине).