Доступ к анонимному объекту в MVVMCross vNext - Portable - с помощью эмулятора WP VS2010

У меня установлены VS2012 и VS2010. Я использую первый для создания ядра PCL моего мобильного приложения в MVVMCross vNext и использую VS2010 для открытия UI.WP7 на эмуляторе WP7 (из-за проблем с подключением к WCF с помощью эмулятора WP VS2012 - он не может подключиться к моей сетевой мост). Все идет хорошо, пока я не использую этот код:

protected void NavigateToClient (клиент ClientDataRepository) { RequestNavigate (новый {ключ = client.IDKlient + «клиенты»}); }

На VS2012 работает хорошо, но в VS2010 у меня есть исключение (я ссылаюсь на core и mvvmcross pcl с помощью .dll)

«Проблема с доступом к объекту — скорее всего, это вызвано тем, что анонимный объект создается как внутренний — см. Анонимные типы и методы доступа Get в WP7.1?");

Я сделал сборку InternalToVisible с PublicKey, в своем ядре и даже в решении Cirrious.MvvmCross, но это не помогает. Есть ли надежда заставить его работать? Кстати, у каждого решения один и тот же PublicTokenKey?


person lechu    schedule 25.02.2013    source источник
comment
Вы должны включить детали исключения в свой вопрос.   -  person Jon Skeet    schedule 25.02.2013


Ответы (1)


Никакой подписи не требуется, поэтому вам не нужно использовать токен открытого ключа.

Достаточно одной строки:

     [assembly: InternalsVisibleTo("Cirrious.MvvmCross")]

Это должно быть в сборке, где создается анонимный объект, так как компилятор сгенерирует internal анонимный класс.

Как в https://github.com/slodge/MvvmCross/blob/vnext/Sample%20-%20CustomerManagement/CustomerManagement/CustomerManagement/Properties/AssemblyInfo.cs#L30

Это работает для меня как в VS2010, так и в VS2012 (с SDK WP7.1 и WP8)


Если это просто не работает для вас, вы всегда можете использовать Dictionary<string,string> вместо навигации - или вы можете использовать неанонимный класс.


Для решения проблемы «он не может подключиться к моему сетевому мосту» попробуйте использовать Ethernet — это работает для меня на моем ноутбуке (и однажды я надеюсь, что WiFi тоже будет работать с эмулятором Win8)

person Stuart    schedule 25.02.2013
comment
Да, это работает!! :) Я неправильно думал об этом доступе. Спасибо. о, что касается Ethernet, спасибо за совет, я попробую это в будущем, но сейчас мне нужно сначала закончить свой проект, чтобы получить степень инженера :) - person lechu; 25.02.2013