没有从 StatelessService 到 'Microsoft.ServiceFabric.Services.Remoting.IService' 的隐式引用转换

There is no implicit reference conversion from StatelessService to 'Microsoft.ServiceFabric.Services.Remoting.IService'

我正在编写一个新的 Azure 服务应用程序,它可以使用远程服务进行通信。 我引用了 this article。我遇到错误:

The type 'PushMsgStatelessService.PushMsgStatelessService' cannot be used as type parameter 'TStatelessService' in the generic type or method 'ServiceRemotingExtensions.CreateServiceRemotingListener(TStatelessService, StatelessServiceContext)'. There is no implicit reference conversion from 'PushMsgStatelessService.PushMsgStatelessService' to 'Microsoft.ServiceFabric.Services.Remoting.IService'. PushMsgStatelessService C:\Nirvana\DataPerPerson\Narendra\PushMessageService\PushMsgStatelessService\PushMsgStatelessService.cs 30 Active

我的代码:

using System.Collections.Generic;
using System.Fabric;
using System.Threading.Tasks;
using Microsoft.ServiceFabric.Services.Communication.Runtime;
using Microsoft.ServiceFabric.Services.Runtime;
using Microsoft.ServiceFabric.Services.Remoting.Runtime;

namespace PushMsgStatelessService
{
    interface IPushMessageService
    {
        Task<string> GetMessageAsync();
    }        

    /// <summary>
    /// An instance of this class is created for each service instance by the Service Fabric runtime.
    /// </summary>
    internal sealed class PushMsgStatelessService : StatelessService, IPushMessageService
    {
        public PushMsgStatelessService(StatelessServiceContext context)
            : base(context)
        { }

        public Task<string> GetMessageAsync()
        {
            return Task.FromResult("Hello!");
        }

        /// <summary>
        /// Optional override to create listeners (e.g., TCP, HTTP) for this service replica to handle client or user requests.
        /// </summary>
        /// <returns>A collection of listeners.</returns>
        protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
        {
            return new[] { new ServiceInstanceListener(context => this.CreateServiceRemotingListener(context)) };
        }
    }
}

我卡在这里了。

您应该在您的界面中添加对 IService 界面的引用。因此,将 interface IPushMessageService 更改为 interface IPushMessageService : IService

侧节点 1:你应该制作你的界面 public。

侧节点 2:最好将您的界面放在一个单独的项目中,以防止在使用远程处理时出现任何循环依赖。