【问题标题】:I got this error how i can fix: it An item with the same key has already been added. Key: 1我收到此错误我该如何解决:它已经添加了具有相同密钥的项目。键:1
【发布时间】:2023-01-24 02:36:32
【问题描述】:

`使用 PhotonPackageParser; 使用系统; 使用 System.Collections.Generic; 使用 System.Linq;

命名空间 Albion.Network { 内部密封类 AlbionParser : PhotonParser, IPhotonReceiver { 私有只读 HandlersCollection 处理程序;

公共 AlbionParser() { handlers = new HandlersCollection(); }

public void AddHandler(PacketHandler 处理程序) { 处理程序。添加(处理程序); }

protected override void OnEvent(byte Code, Dictionary<byte, object> 参数) { 如果(代码 == 3) { Parameters.Add(1, EventCodes.Move); }

short eventCode = ParseEventCode(参数); 如果(事件代码 == 27) { Console.Write("事件代码: " + eventCode + " ["); Parameters.ToList().ForEach(x => Console.Write(x.Key + " {" + x.Value + "::" + ObjectDumper.Dump(x.Value, 2) + "},")); Console.WriteLine("]"); }

var eventPacket = new EventPacket(eventCode, Parameters);

handlers.HandleAsync(eventPacket); }

protected override void OnRequest(byte OperationCode, Dictionary<byte, object> 参数) { short operationCode = ParseOperationCode(Parameters); var requestPacket = new RequestPacket(operationCode, Parameters);

handlers.HandleAsync(requestPacket); }

protected override void OnResponse(byte OperationCode, short ReturnCode, string DebugMessage, Dictionary<byte, object> 参数) { short operationCode = ParseOperationCode(Parameters); var responsePacket = new ResponsePacket(operationCode, Parameters);

handlers.HandleAsync(responsePacket); }

private short ParseOperationCode(Dictionary<byte, object> parameters) { if (!parameters.TryGetValue(253, out object value)) { 抛出新的 InvalidOperationException(); }

返回(短)值; }

private short ParseEventCode(字典<字节,对象>参数) { if (!parameters.TryGetValue(252, out object value)) { 抛出新的 InvalidOperationException(); }

返回(短)值; } } }`

【问题讨论】:

  • 花点时间阅读帮助中心的editing help。 Stack Overflow 上的格式与其他网站上的不同。您的帖子看起来越好,其他人就越容易阅读和理解它。
  • 您发布的代码似乎超出了您的问题的合理范围。请阅读How to Ask以及如何制作minimal reproducible example;提供 MRE 可帮助用户回答您的问题,并帮助未来的用户与您的问题相关联。

标签: c#


【解决方案1】:

使用 PhotonPackageParser;使用系统;使用 系统.集合.通用;使用 System.Linq;

命名空间 Albion.Network { 内部密封类 AlbionParser : PhotonParser, IPhotonReceiver { 私有只读 HandlersCollection 处理程序;

    public AlbionParser()
    {
        handlers = new HandlersCollection();
    }

    public void AddHandler<TPacket>(PacketHandler<TPacket> handler)
    {
        handlers.Add(handler);
    }

    protected override void OnEvent(byte Code, Dictionary<byte, object> Parameters)
    {
        if (Code == 3)
        {
            Parameters.Add(252, EventCodes.Move);
        }

        short eventCode = ParseEventCode(Parameters);
        if (eventCode == 27)
        {
            Console.Write("EventCode: " + eventCode + " [");
            Parameters.ToList().ForEach(x => Console.Write(x.Key + " {" + x.Value + "::" + ObjectDumper.Dump(x.Value, 2) + "},"));
            Console.WriteLine("]");
        }


        var eventPacket = new EventPacket(eventCode, Parameters);

        _ = handlers.HandleAsync(eventPacket);
    }

    protected override void OnRequest(byte OperationCode, Dictionary<byte, object> Parameters)
    {
        short operationCode = ParseOperationCode(Parameters);
        var requestPacket = new RequestPacket(operationCode, Parameters);

        _ = handlers.HandleAsync(requestPacket);
    }

    protected override void OnResponse(byte OperationCode, short ReturnCode, string DebugMessage, Dictionary<byte, object> Parameters)
    {
        short operationCode = ParseOperationCode(Parameters);
        var responsePacket = new ResponsePacket(operationCode, Parameters);

        _ = handlers.HandleAsync(responsePacket);
    }

    private short ParseOperationCode(Dictionary<byte, object> parameters)
    {
        if (!parameters.TryGetValue(253, out object value))
        {
            throw new InvalidOperationException();
        }

        return (short)value;
    }

    private short ParseEventCode(Dictionary<byte, object> parameters)
    {
        if (!parameters.TryGetValue(252, out object value))
        {
            throw new InvalidOperationException();
        }

        return (short)value;
    }
} }

谢谢你的负面顺便说一句

【讨论】:

    猜你喜欢
    • 2020-06-13
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    相关资源
    最近更新 更多