public void SerializerShouldPreserveTypes()
        {
            var proxy  = new Proxy();
            var tproxy = ProxyGen.CreateInstance <IBar>(proxy);

            tproxy.Test(new A(), new object[] { new B(), new C() });
            var ser    = _serializer;
            var binder = new DefaultMethodBinder();
            var ms     = new MemoryStream();

            ser.SerializeCall(ms, binder, "Target", proxy.LastCall);
            ms.Seek(0, SeekOrigin.Begin);

            var call = ser.DeserializeCall(ms, binder, new TargetSelector(new Target()), "ctx");

            call.Method.Invoke(call.Target, call.Arguments);
        }
        public void TestSerializeAndDeserialize()
        {
            var proxy  = new Proxy();
            var tproxy = ProxyGen.CreateInstance <IFoo>(proxy);

            tproxy.Test(1, new List <string> {
                "2", "3"
            });
            var ser    = _serializer;
            var binder = new DefaultMethodBinder();
            var ms     = new MemoryStream();

            ser.SerializeCall(ms, binder, "Target", proxy.LastCall);
            ms.Seek(0, SeekOrigin.Begin);

            var call = ser.DeserializeCall(ms, binder, new TargetSelector(new Target()), "ctx");

            call.Method.Invoke(call.Target, call.Arguments);
        }