Reflection 如何使用反射按字符串名调用API?
如何通过字符串名在另一个AppService中调用API 示例:我在MyAppService中有一个API,如下所示Reflection 如何使用反射按字符串名调用API?,reflection,aspnetboilerplate,Reflection,Aspnetboilerplate,如何通过字符串名在另一个AppService中调用API 示例:我在MyAppService中有一个API,如下所示 public class MyAppService : MyAppServiceBase, IMyAppService { private readonly IRepository<MyEntity> _myEntityRepository; public CommonLookupAppService(IReposito
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,因为应用程序服务的名称是动态生成的,不是吗?组件名称是动态生成的,并且每次启动都不同。