【问题标题】:Create a class dynamically using System.Reflection.Emit in UWP在 UWP 中使用 System.Reflection.Emit 动态创建一个类
【发布时间】:2018-02-11 14:47:22
【问题描述】:

在 UWP 中使用 System.Reflection.Emit 动态创建一个类。在 UWP AppDomain.CurrentDomain.DefineDynamicAssembly 中丢失。请提出任何解决方案。

【问题讨论】:

  • 你打算用创建的类做什么?
  • AssemblyBuilderTypeBuilder 自 Windows 10 起可用于 UWP。您具体遇到了什么问题?
  • AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run) 在 uwp 中出现错误。请提出另一种获取 AppDomain 的方法或如何在 UWP 中初始化 AssemblyBuilder
  • 让你想知道,为什么我还要费心给你链接。 TypeBuilder 的文档包含您所要求的一切。 AssemblyBuilder 也是如此。是看不懂还是太懒了?
  • 抱歉再次询问我的上述问题非常清楚,如何初始化 AssemblyBuilder 以便在 UWP 中初始化 AssemblyBuilder 我们需要 UWP 中缺少或无法解决的“AppDomain.CurrentDomain”。如果能够解决我需要参考的程序集的错误。我已经通过查看文档来构建所有代码,如果这个问题解决了我的所有代码都可以工作,那么任何问题都无法解决“AppDomain”。我需要根据来自 WebApi 的数据创建模型类,这是要求。

标签: uwp uwp-xaml


【解决方案1】:

您需要在项目中包含 System.Reflection.Emit 的 Nuget 包。他们一直在将 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

【讨论】:

    【解决方案2】:

    根据我阅读过的 Windows 10 API 和尝试自己编写代码的内容,AppDomain 根本不可用。尽管 TypeBuilder 和 AssemblyBuilder API 显示它在 Windows 10 中受支持,但这似乎是错误的。它实际上并不存在于 UWP 版本的 System.Reflection 和 System.Reflection.Emit 中。 AppDomain 也没有。

    Windows 10 Supported Reflection Types

    【讨论】:

    • 已确认。我也找不到 UWP 应用的 ModuleBuilderAssemblyBuilder
    猜你喜欢
    • 2016-03-29
    • 2017-04-15
    • 1970-01-01
    • 2012-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 2011-09-29
    相关资源
    最近更新 更多