我希望有一个通用类型的服务,即 -
public interface IFooService<T>
{
Task<T> Get(int id);
}
Run Code Online (Sandbox Code Playgroud)
但是,服务结构不允许使用泛型类或泛型方法.我也尝试过类似的东西
public interface INinjaService : IService, IFooService<SuperNinja>
{
}
Run Code Online (Sandbox Code Playgroud)
但它没有拿起继承的接口说明
服务类型"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());
}
}
Run Code Online (Sandbox Code Playgroud)
使用代码(从Owin WebApi服务调用
public async Task<SuperNinja> Get(int key)
{
try
{
INinjaService service = ServiceProxy.Create<INinjaService>(new Uri("fabric:/Omni.Fabric/Services"));
var t = …
Run Code Online (Sandbox Code Playgroud)