Reflection 从未知对象(.net)生成招摇文件
我想开发一个新的API。它必须连接Dynamics CRM和前端开发人员 如今,已开发的“变通方法”是:Reflection 从未知对象(.net)生成招摇文件,reflection,swagger,dynamics-crm,reflection.emit,swagger-codegen,Reflection,Swagger,Dynamics Crm,Reflection.emit,Swagger Codegen,我想开发一个新的API。它必须连接Dynamics CRM和前端开发人员 如今,已开发的“变通方法”是: 填写Excel文件以描述CRM和自定义对象(使用fetchXml,…) 写入并连接字符串以写入YAML文件 将此文件复制到swagger编辑器,并与Postman一起进行测试 在第一步中,我想生成没有字符串连接的模式。。。(暂时,等待用OData和ASP.NET Core替换Excel文件以获得更强大的功能) 目前,我使用反射从Excel文件构建对象: using System.Reflec
using System.Reflection;
using System.Reflection.Emit;
using Swashbuckle.Swagger;
...
var assemblyName = new AssemblyName(Guid.NewGuid().ToString();
var assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run);
var moduleBuilder = assemblyBuilder.DefineDynamicModule("Module");
var typeBuilder = moduleBuilder.DefineType(entity.CrmEntityName);
foreach (var attribute in entity.Attributes)
{
Type t = typeof(int);
switch (attribute.DataType.ToLower())
{
case "string":
t = typeof(string);
break;
case "integer":
t = typeof(int);
break;
case "date":
t = typeof(DateTime);
break;
}
typeBuilder.DefineField(attribute.CrmName, t.GetType(), FieldAttributes.Public);
var type = typeBuilder.CreateType();
// create the Swagger models here
}
如何从这些类型和属性生成我的招摇?
我查看了一个名为
Schema
的对象,其中包含一个名称和另一个Schema
,我不知道这是否是一种错误的方式 可以实现并注册IDocumentFilter,在其中可以注册使用TypeBuilder创建的自定义类型
public class MyDocFilter : Swashbuckle.Swagger.IDocumentFilter
{
public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer)
{
schemaRegistry.GetOrRegister(MyDynamicType);
}
}
确保在SwaggerConfig中注册它,如下所示:
c.DocumentFilter<MyDocFilter>();
可以实现并注册IDocumentFilter,在其中可以注册使用TypeBuilder创建的自定义类型
public class MyDocFilter : Swashbuckle.Swagger.IDocumentFilter
{
public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer)
{
schemaRegistry.GetOrRegister(MyDynamicType);
}
}
确保在SwaggerConfig中注册它,如下所示:
c.DocumentFilter<MyDocFilter>();