I have an invocation logger that is intended to record all method calls along with the parameters associated with the method using XmlSerializer. It works well for most of t
using (var ms = new MemoryStream())
{
var serialiser = new DataContractSerializer(typeof (EnvironmentMetadata));
serialiser.WriteObject(ms, environmentMetadata);
var s = Encoding.ASCII.GetString(ms.ToArray());
return s;
}