类没有实现接口成员

时间:2014-07-10 00:58:07

标签: c#

这是我在这里提出的第一个问题,所以请原谅我是否真的与一些更高级的问题相提并论。我主要是一名Java开发人员,但最近我开始转向C#,我决定拿起光子网络库,以便开始使用我正在使用Unity3D作为业余爱好创建的游戏来实现它。

我收到的错误如下:

  

错误1'MMO.Photon.Server.PhotonServerHandler'未实现接口成员'MMO.Framework.IHandler.HandleMeessage(MMO.Framework.IMessage,MMO.Photon.Server.PhotonServerPeer)'c:\ users \ boyz \ documents \ visual studio 2012 \ Projects \ MMO.Framework \ MMO.PhotonFramework \ Server \ PhotonServerHandler.cs 11 27 MMO.Photon

我真的不明白,据我所知它正在实现界面,但我真的不明白它是如何工作的。所以我只会告诉你这里有问题的课程。

PhotonServerHandler是错误派生的类(或似乎是)

namespace MMO.Photon.Server
{
    public abstract class PhotonServerHandler : IHandler<PhotonServerPeer>
    {
        public abstract MessageType Type { get; }
        public abstract byte Code { get; }
        public abstract int? SubCode { get; }
        protected PhotonApplication Server;

        public PhotonServerHandler(PhotonApplication application)
        {
            this.Server = application;
        }

        public bool HandleMessage(IMessage message, PhotonServerPeer serverPeer)
        {
            OnHandleMessage(message, serverPeer);
            return true;
        }

        protected abstract bool OnHandleMessage(IMessage message, PhotonServerPeer serverPeer);
    }
}

然后是它导入或继承的IHandler;不过你用C#来表达它。

namespace MMO.Framework
{
    public interface IHandler<T>
    {
        MessageType Type { get; }
        byte Code { get; }
        int? SubCode { get; }
        bool HandleMeessage(IMessage message, T peer);
    }
}

然后最后但并非最不重要的是,我们有PhotonServerPeer类

namespace MMO.Photon.Server
{
    public class PhotonServerPeer : ServerPeerBase
    {
        private readonly PhotonServerHandlerList handlerList;
        protected readonly PhotonApplication Server;

        #region Factory Method

        public delegate PhotonServerPeer Factory(IRpcProtocol protocol, IPhotonPeer photonPeer);

        #endregion

        public PhotonServerPeer(IRpcProtocol protocol, IPhotonPeer photonPeer, PhotonServerHandlerList handlerList, PhotonApplication application) : base(protocol, photonPeer)
        {
            this.handlerList = handlerList;
            this.Server = application;
        }

        protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters)
        {
            handlerList.HandleMessage(new PhotonRequest(operationRequest.OperationCode, operationRequest.Parameters.ContainsKey(Server.SubCodeParameterKey) ? (int?)Convert.ToInt32(operationRequest.Parameters[Server.SubCodeParameterKey]) : null, operationRequest.Parameters), this);
        }

        protected override void OnEvent(IEventData eventData, SendParameters sendParameters)
        {
           handlerList.HandleMessage(new PhotonEvent(eventData.Code, eventData.Parameters.ContainsKey(Server.SubCodeParameterKey) ? (int?)Convert.ToInt32(eventData.Parameters[Server.SubCodeParameterKey]) : null, eventData.Parameters), this);
        }

        protected override void OnOperationResponse(OperationResponse operationResponse, SendParameters sendParameters)
        {
            handlerList.HandleMessage(new PhotonResponse(operationResponse.OperationCode, operationResponse.Parameters.ContainsKey(Server.SubCodeParameterKey) ? (int?)Convert.ToInt32(operationResponse.Parameters[Server.SubCodeParameterKey]) : null, operationResponse.Parameters, operationResponse.DebugMessage, operationResponse.ReturnCode), this);

        }

        protected override void OnDisconnect(DisconnectReason reasonCode, string reasonDetail)
        {
            //Server.ConnectionCollection.OnDisconnect(this);
        }
    }
}

我根本不理解这个错误,现在困扰我几个小时,我已经尝试了所有我知道的事情,我一直在做一些谷歌搜索,这可能只是一个非常基本的错误,我错过了,但任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

您目前public bool HandleMessage中有PhotonServerHandler,但错误是抱怨PhotonServerHandler未实施HandleMeessage

看起来你在这里有一个错字:

public interface IHandler<T>
{
    MessageType Type { get; }
    byte Code { get; }
    int? SubCode { get; }
    bool HandleMeessage(IMessage message, T peer);
}

HandleMeessage重命名为HandleMessage,该特定错误应该消失。

答案 1 :(得分:0)

在我的情况下它是 - “类没有实现接口成员INativeObject.Handle”

我刚用NSObject继承了我的课,问题得到了解决。