首页 > 解决方案 > 使用在 C# .Net Core 中运行时创建的类型

问题描述

技术要求:

MS SQL DB、.NET Core 3.1、EF Core、C#

那应该做什么:

我需要在 C# 中创建一些元数据驱动的解决方案,该解决方案必须能够连接到数据库,然后从JSON 文件中定义的任何表中检索数据,程序将其作为输入。在 JSON 文件架构中,列出了表。例如:

{
   schema: 'dbo',
   table: 'customers',
   columns: [
              {
                name: 'FirstName',
                type: 'string'
              },
              {
                name: 'Age',
                type: 'integer'
              }
            ]
}

解决方案应该能够创建反映当前 JSON 文件需求的类(Type) 。之后,它应该使用这种新类型来设置一个DbSet<new_type> CustomTypeList { get; set; }inDBContext并随后使用IEntityTypeConfiguration.

到目前为止我做了什么:

我使用了这篇文章中的代码,因此实现了某种类型的RuntimeCustomTypeCreation类,它type在我的程序开始后通过 usingSystem.ReflectionSystem.Reflection.Emit命名空间返回一个新创建的类。新类型准确地反映了 JSON 为我们排序的结构。现在可以使用System.Activator.CreateInstance(...)函数轻松创建该类型的新实例。

我无法解决的问题:

如何在我的应用程序中使用我新创建的运行时类型,例如在编译和执行之前编写为代码的任何类?我需要能够做上面已经写过的事情,那就是:

DbSet<new_type> CustomTypeList { get; set; }

我必须在某处“注册”我新创建的类型吗?这甚至可能吗?谢谢!

标签: c#.net-corereflectionruntimereflection.emit

解决方案


推荐阅读