是否可以计算我通过WCF发送的(复杂的)对象(带有dataContract)的大小?我需要的是计算请求和响应对象的大小,我需要在winform应用程序中执行此操作.
我可以对物体进行加工,然后得到总尺寸吗?
最佳答案 您可以自己手动序列化/反序列化对象.这是序列化和获取长度的简单示例.
[DataContract(Name = "Person", Namespace = "http://www.woo.com")]
class Person
{
[DataMember()]
public string Name;
[DataMember()]
public int Age;
}
调用代码(在控制台应用程序中)
Person p = new Person();
p.Name = "Sean Cocteau";
p.Age = 99;
DataContractSerializer ds = new DataContractSerializer(p.GetType());
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
ds.WriteObject(ms, p);
// Spit out
Console.WriteLine("Output: " + System.Text.Encoding.UTF8.GetString(ms.ToArray()));
Console.WriteLine("Message length: " + ms.Length.ToString());
}
Console.ReadKey();
关于自动执行此操作,例如,在每个WCF调用上可能涉及您必须创建自己的Custom Binding,并将其添加到消息中.