Собственная проблема UWP .NET

Я использую Prism 6 для UWP и Microsoft.NetCore.Uwp 5.2.2. Я столкнулся с проблемой в версии Release, что я не могу использовать отражение.

У меня есть такие объекты как IDictionary<string, ReadOnlyCollection<string>>. Как добавить для них политику в default.rd.xml?


person Bek Masharipov    schedule 02.03.2017    source источник


Ответы (2)


В моем проекте у нас недавно была аналогичная проблема с IDictionary, см. здесь. Я не знаю, похоже ли сообщение об ошибке на ваше, но в нашем случае решением было добавить директивы времени выполнения в файл .rd.xml, подобные этому:

<Type Name="System.Collections.Generic.IDictionary{System.String,System.Collections.ObjectModel.ReadOnlyCollection{System.String}}" MarshalStructure="Excluded" />
person Anders Gustafsson    schedule 07.03.2017
comment
спасибо, это помогло. Проблема была не совсем в политике MarshalStructure, мне просто нужно было знать синтаксис - person Bek Masharipov; 07.03.2017

Я не могу воспроизвести вашу проблему. Я запускаю проект в режиме выпуска, который содержит объекты IDictionary<string, ReadOnlyCollection<string>>, и я не встречаю никаких ошибок или исключений. Моя версия ОС — сборка 14393, и я тестировал ее на локальной машине.

Поскольку я не уверен, какую ошибку или исключение вы получили, вы можете попробовать добавить следующие относительные политики коллекции в default.rd.xml.

<Assembly Name="*Application*" Dynamic="Required All" />    

<!--Add your application specific runtime directives here.--> 
<Namespace Name="System.Collections.ObjectModel" >
 <TypeInstantiation Name="ReadOnlyCollection" 
       Arguments="ContosoClient.DataModel.ProductGroup" Serialize="Public"/> 
 <TypeInstantiation Name="ObservableCollection"
       Arguments="ContosoClient.DataModel.ProductItem" Serialize="Public" />
 <TypeInstantiation Name="ReadOnlyObservableCollection"
       Arguments="ContosoClient.DataModel.ProductGroup" Serialize="Public" />     
</Namespace>

Дополнительные сведения о файле конфигурации rd.xml см. в этой статье< /а>. Если вы получили MissingMetadataException в некоторых сценариях отражения, вы можете следовать этот блог, чтобы устранить проблему.

person Sunteen Wu    schedule 07.03.2017
comment
Спасибо. Я попробую. Проблема в том, что я использую это свойство, чтобы сохранить его, когда приложение приостанавливается и завершается. Я не знаю, знакомы ли вы с библиотекой Prism, но я использую атрибут [ReatorableState] над всеми свойствами, которые я хочу сохранить. Служба состояния сеанса prism использует этот атрибут. Я получаю InvalidDataContractAttribute exception - person Bek Masharipov; 07.03.2017