gpt4 book ai didi

c# - BinaryFormatter.Deserialize HeaderHandler 捕获返回值

转载 作者:行者123 更新时间:2023-11-30 12:14:17 25 4
gpt4 key购买 nike

我正在使用 BinaryFormatter.Deserialize(Stream, HeaderHandler)。 我可能在这里遗漏了一些明显的东西,但我在网上找不到任何示例,所以我希望有人能阐明一些问题.我已经传入了返回对象的委托(delegate) HeaderHandler,但我不知道如何获取它返回的那个对象?

最佳答案

K;通过反射器跟踪。常规实现使用此值的唯一时间是,当通过远程处理处理某些数据时,如果从 HeaderHandler 返回的值是 MarshalByRefObject,在这种情况下会获得一个标识并用于链接回来。具体来说,System.Runtime.Remoting.Messaging.MethodCall 构造函数。

但所有这些都是实现细节!在大多数理智的情况下,答案是:它没有被使用。

事实上, header 处理发生在主反序列化之后,这排除了厚颜无耻地使用 header 处理程序在上下文对象上设置一些值,然后您将处理这些值。

但是,您的 header 处理程序仍然可以更新局部变量:

string someValue = null;
object obj = serializer.Deserialize(source, headers => {
// check the headers and assign someValue based on
// what you find there; for brevity, make it up!
someValue = "something from the headers";
return null;
});
Console.WriteLine(someValue);

一定喜欢完整的词法闭包。

不过,就我个人而言,我得出结论:这不是执行此操作的方法。我会简单地传输一个包含完全您要发送的数据的 DTO。

关于c# - BinaryFormatter.Deserialize HeaderHandler 捕获返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9906750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com