【问题标题】:How to edit C# library files如何编辑 C# 库文件
【发布时间】:2016-08-11 09:53:18
【问题描述】:

我在使用我正在使用的套接字库 Fleck 将我的 C# 应用程序与我的 Web 应用程序通信时遇到问题。

我正在尝试发送一个数组,但套接字库只能发送/接收字符串作为消息。我知道我可以将数组作为字符串发送并在我的 C# 应用程序上将其字符串化,但我有一些特定的理由不这样做。

根据上图,您可以看到 .cs 文件已被锁定,我无权进行任何更改。我相信开发人员有充分的理由将消息变量设置为 String ONLY

有什么想法吗?

【问题讨论】:

  • 您已链接到 Fleck 的源代码 - 您不能简单地更改代码以满足您的需求,而不用担心库被锁定吗?
  • 由于只有字符串的原因,它看起来像是基于在支持二进制数据之前创建的Nugget。见这里:nugget.codeplex.com/discussions/267587
  • @JamesThorpe 很高兴知道这一点。是否可以更改程序集文件?我不知道如何获取原始来源...

标签: c# .net sockets websocket


【解决方案1】:

您可以序列化数组并使用 Send(byte[]) 通过 BinaryFormatter 将对象作为字节传输,或者您可以使用 XmlSerializer 并使用 Send(string)

【讨论】:

    【解决方案2】:

    该文件显示为“已锁定”,因为它不是真实文件 - 它是根据您引用的程序集的内容自动生成的,向您显示原始源 可能的外观.如果您想进行任何实际更改,您需要获取原始源(您在问题中链接到的),更改它(许可允许)并重建它。

    话虽如此,它似乎是 Web 套接字的包装接口,无论如何它们只支持二进制或字符串数​​据,因此在某种程度上,您必须将消息转换为其中一种类型。您也可以在代码进入库之前在代码中执行该转换。

    【讨论】:

      【解决方案3】:

      这是一个库文件,这意味着您只能访问代码,不能编辑它

      可以做的是创建扩展属性或方法,这意味着您可以将覆盖方法传递给Send 方法并将其传递给一个数组。

      您使用:IWebSocketConnection 继承代码:

      public interface IMyWebSocketExtended : IWebSocketConnection

      然后创建接受您需要的类型的覆盖方法。

      或者,您可以在将数据传递给IWebSocketConnection 之前从数组中提取数据,这样就省去了麻烦:)

      【讨论】:

        【解决方案4】:

        实现这一点的方法之一是扩展方法。

        public interface CustomWebSocket : IWebSocketConnection
        

        例如,一旦你扩展了方法,你就可以修改内容并使用它。

        您可能需要先查看源代码并检查内容。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-01-01
          • 1970-01-01
          • 2015-11-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-07
          • 2020-10-23
          相关资源
          最近更新 更多