这是我在这里提出的第一个问题,所以请原谅我是否真的与一些更高级的问题相提并论。我主要是一名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);
}
}
}
我根本不理解这个错误,现在困扰我几个小时,我已经尝试了所有我知道的事情,我一直在做一些谷歌搜索,这可能只是一个非常基本的错误,我错过了,但任何帮助将不胜感激。
答案 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继承了我的课,问题得到了解决。