Reflection 如何使用反射按字符串名调用API?

Reflection 如何使用反射按字符串名调用API?,reflection,aspnetboilerplate,Reflection,Aspnetboilerplate,如何通过字符串名在另一个AppService中调用API 示例:我在MyAppService中有一个API,如下所示 public class MyAppService : MyAppServiceBase, IMyAppService { private readonly IRepository<MyEntity> _myEntityRepository; public CommonLookupAppService(IReposito

如何通过字符串名在另一个AppService中调用API

示例:我在MyAppService中有一个API,如下所示

public class MyAppService : MyAppServiceBase, IMyAppService
    {
        private readonly IRepository<MyEntity> _myEntityRepository;    
        public CommonLookupAppService(IRepository<MyEntity> myEntityRepository)
            {
                 _myEntityRepository = myEntityRepository;            
            }

        public async Task<MyOutput> MyMethod (MyInput input)
            {

            }
    }

如何将MyMethod作为字符串保存到数据库中,并在另一个应用程序服务中调用它?我有很多这样的方法,所以我不想用switch case来调用它们。我想将此方法程序集名称作为字符串保存到数据库中,并在需要时调用它。我该怎么办?

您可以结合使用:

Type.GetTypestring Type.GetMethodstring IIocResolver.ResolveAsDisposableType-通过ABP MethodInfo.InvokeObject, 对象[] //var-appServiceName=MyAppService; //var methodName=MyMethod; //var输入=新对象[]{new MyInput}; var-appServiceType=Type.GetTypeappServiceName; var method=appServiceType.GetMethodName; 使用var appService=IocResolver.ResolveAsDisposableappServiceType { var output=await Taskmethod.InvokeappService.Object,输入; }
AppService至少是已知的吗?是的,目前我在交换机中直接调用api。但我更喜欢使用反射,而不是一长串代码。是否可以将MyAppService也保存为字符串保存到数据库?或者您可以编写类似@tiennguyen的内容,以解决一个完全不同的子问题,并要求您手动注册组件…@aaron,因为应用程序服务的名称是动态生成的,不是吗?组件名称是动态生成的,并且每次启动都不同。