【发布时间】:2016-11-01 17:57:52
【问题描述】:
我在 Azure 中使用 Service Fabric 并为这样的参与者设置代理:
var proxy = ActorProxy.Create<T>(actorId);
必须将 T 指定为我正在调用的参与者的接口。
假设我将接口的名称作为字符串:
var interfaceName = "IUserActor";
有没有办法通过这个字符串名称来实例化一个泛型类型?如果有,如何通过字符串名称调用给定接口中指定的方法?
所有参与者接口都继承自作为 Service Fabric 一部分的 IActor。
现在我知道不建议这样做,重点是能够从测试和管理目的访问给定参与者的参与者状态。在这种情况下,速度无关紧要,因此任何反射方法都可以。
所以,一个基本的用法示例,不使用动态接口名称:
public async Task<string> AdminGetState(ActorId actorId, string interfaceName){
var proxy = ActorProxy.Create<IUserActor>(actorId);
var state = await proxy.AdminGetStateJson();
return JsonConvert.SerializeObject(state);
}
【问题讨论】:
标签: c# generics reflection interface azure-service-fabric