Вы можете вручную сериализовать / десериализовать объекты самостоятельно. Вот простой пример сериализации и получения длины.
[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 может потребоваться создание собственной пользовательской привязки , которая добавляет это к сообщению.