Создайте класс динамически, используя System.Reflection.Emit в UWP.

Создайте класс динамически, используя System.Reflection.Emit в UWP. в UWP AppDomain.CurrentDomain.DefineDynamicAssembly отсутствует. Пожалуйста, предложите любое решение.


person SINU S    schedule 16.06.2016    source источник
comment
Для чего вы собираетесь использовать созданный класс?   -  person Peter Torr - MSFT    schedule 16.06.2016
comment
Как AssemblyBuilder, так и TypeBuilder доступны для UWP начиная с Windows 10. Что конкретно у тебя проблемы?   -  person IInspectable    schedule 16.06.2016
comment
AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run) выдает ошибку в uwp. пожалуйста, предложите альтернативный подход для получения AppDomain или как инициализировать AssemblyBuilder в UWP   -  person SINU S    schedule 17.06.2016
comment
Заставляет вас задаться вопросом, почему я вообще удосужился дать вам ссылки. В документации для TypeBuilder есть все, что вам нужно просить. То же самое касается AssemblyBuilder. Ты читать не умеешь или тебе просто лень?   -  person IInspectable    schedule 18.06.2016
comment
извините за повторный вопрос, мой вышеприведенный вопрос очень ясен: как инициализировать AssemblyBuilder, чтобы инициализировать AssemblyBuilder в UWP, нам нужен AppDomain.CurrentDomain, который отсутствует в UWP или не может быть разрешен. если удастся устранить ошибку, на какую сборку мне нужно сослаться. Я создаю весь код, просматривая документацию, уже одна проблема не может решить AppDomain, если эта проблема разрешится, весь мой код будет работать. Мне нужно создать свой класс модели на основе моих данных из WebApi, что является требованием.   -  person SINU S    schedule 20.06.2016


Ответы (2)


Вам необходимо включить пакет Nuget для System.Reflection.Emit в свой проект. Они разбили части API на отдельные пакеты.

Затем вы можете использовать метод AssemblyBuilder.DefineDynamicAssembly для создания сборки в памяти в проекте UWP.

Но это не будет работать с .NET Native Toolchain, а это означает, что вы, вероятно, не сможете отправить в магазин:

https://blogs.windows.com/buildingapps/2015/08/20/net-native-what-it-means-for-universal-windows-platform-uwp-developers/#8t4LmYa5JGBQXsRk. 97

https://docs.microsoft.com/en-us/windows/uwp/packaging/packaging-uwp-apps

person Michael Hawker - MSFT    schedule 11.02.2018

Из того, что я прочитал в Windows 10 API, и из того, что я пытался написать код самостоятельно, AppDomain вообще недоступен. Хотя API TypeBuilder и AssemblyBuilder показывают, что они поддерживаются в Windows 10, это кажется неверным. На самом деле его нет в UWP-версии System.Reflection и System.Reflection.Emit. Как и AppDomain.

Типы отражения, поддерживаемые Windows 10

person snickler    schedule 22.06.2016
comment
Подтвержденный. Я также не могу найти ModuleBuilder или AssemblyBuilder для приложения UWP. - person Mike Keskinov; 09.02.2017