我正在使用BinaryFormatter.Deserialize(Stream, HeaderHandler).
我可能在这里遗漏了一些明显的东西,但我在网上找不到任何例子,所以我希望有人能有所启发。我已经传入了返回对象的委托 HeaderHandler,但我不知道如何获取它返回的对象?
问问题
2195 次
2 回答
3
ķ; 通过反射器跟踪。常规实现使用此值的唯一时间是,当通过远程处理处理某些数据时,如果从返回的值HeaderHandler
是 a MarshalByRefObject
,在这种情况下,将获得一个身份并用于链接回。具体来说,System.Runtime.Remoting.Messaging.MethodCall
构造函数。
但所有这些都是一个实现细节!在大多数理智的情况下,答案是:它没有被使用。
实际上,标头处理发生在主要反序列化之后,这排除了使用标头处理程序在上下文对象上设置一些值,然后您进行处理。
但是,您的标头处理程序仍然可以更新局部变量:
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 。
于 2012-03-28T12:13:42.660 回答
0
据我所知, BinaryFormatter 对返回的对象没有任何作用。
var deserializedObject = (TypeOfDeserializedObject)
BinaryFormatter.Deserialize(stream, headers =>
{
//do stuff with your headers here
foreach (var header in headers)
{
}
return new object();
});
于 2012-03-28T12:02:53.050 回答