public void SerializeCall(Stream stream, IMethodBinder info, string target, MethodCall call) { var writer = XmlWriter.Create(stream); writer.WriteStartElement("MethodCall"); writer.WriteElementString("Target", target); writer.WriteElementString("MethodSignature", Convert.ToBase64String(info.GetMethodSignature(call.Method))); writer.WriteStartElement("Arguments"); var ctx = Cache.GetContext(); var parameters = call.Method.GetParameters(); for (int i = 0; i < parameters.Length; i++) { var parameter = parameters[i]; var serializer = ctx[parameter.ParameterType]; var container = serializer.Create(); container.Value = call.Arguments[i]; serializer.Serializer.Serialize(writer, container); } writer.WriteEndElement(); writer.WriteEndElement(); writer.Flush(); }
public void SerializeCall(Stream stream, IMethodBinder binder, string target, MethodCall call) { var sig = binder.GetMethodSignature(call.Method); using (var writer = CreateWriter(stream)) { writer.WriteStartObject(); writer.WritePropertyName("Target"); writer.WriteValue(target); writer.WritePropertyName("MethodSignature"); writer.WriteValue(_useBson ? (object)sig : Convert.ToBase64String(sig)); writer.WritePropertyName("Arguments"); _serializer.Serialize(writer, call.Arguments); writer.WriteEndObject(); } }