我希望您能提供一种通用类型的服务,例如 -
然而,Service Fabric 不允许泛型类或泛型方法。我也尝试过类似以下的内容:
public interface IFooService<T>
{
Task<T> Get(int id);
}
然而,Service Fabric 不允许泛型类或泛型方法。我也尝试过类似以下的内容:
public interface INinjaService : IService, IFooService<SuperNinja>
{
}
但它不能识别继承的接口说明。
服务类型“Omni.Fabric.Services.NinjaService”未实现任何服务接口。服务接口是从“Microsoft.ServiceFabric.Services.Remoting.IService”类型派生的接口。
我似乎在Service Fabric文档或stackoverflow上找不到泛型的参考。可能这还太新了,或者我正在走错路。是否有人成功实现过这种模式?能做到吗?应该这样做吗?
NinjaService,如您所请求的
public class NinjaService : StatelessService, INinjaService
{
public NinjaService(StatelessServiceContext serviceContext) : base(serviceContext)
{
}
protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
{
return new[] { new ServiceInstanceListener(context => this.CreateServiceRemotingListener(context)) };
}
public Task<SuperNinja> Get(int id)
{
return Task.FromResult(new SuperNinja());
}
}
消耗代码(从一个 Owin WebApi 服务中调用)
public async Task<SuperNinja> Get(int key)
{
try
{
INinjaService service = ServiceProxy.Create<INinjaService>(new Uri("fabric:/Omni.Fabric/Services"));
var t = await service.Get(key).ConfigureAwait(false);
return t;
}
catch (Exception ex)
{
throw;
}
}