예제 #1
0
        private bool PingComplexModelOutAndRefImplementation(
            ComplexModelInput inputModel,
            ref ComplexModelResponse responseModelRef1,
            ComplexObject data1,
            ref ComplexModelResponse responseModelRef2,
            ComplexObject data2,
            out ComplexModelResponse responseModelOut1,
            out ComplexModelResponse responseModelOut2)
        {
            Console.WriteLine("input params:\n");
            Console.WriteLine($"{nameof(inputModel)}:\n{Newtonsoft.Json.JsonConvert.SerializeObject(inputModel)}\n");
            Console.WriteLine($"{nameof(responseModelRef1)}:\n{Newtonsoft.Json.JsonConvert.SerializeObject(responseModelRef1)}\n");
            Console.WriteLine($"{nameof(responseModelRef2)}:\n{Newtonsoft.Json.JsonConvert.SerializeObject(responseModelRef2)}\n");
            Console.WriteLine($"{nameof(data1)}:\n{Newtonsoft.Json.JsonConvert.SerializeObject(data1)}\n");
            Console.WriteLine($"{nameof(data2)}:\n{Newtonsoft.Json.JsonConvert.SerializeObject(data2)}\n");

            responseModelRef1 = ComplexModelResponse.CreateSample2();
            responseModelRef2 = ComplexModelResponse.CreateSample1();
            responseModelOut1 = ComplexModelResponse.CreateSample3();
            responseModelOut2 = ComplexModelResponse.CreateSample1();

            Console.WriteLine("output params:\n");
            Console.WriteLine($"{nameof(responseModelRef1)}:\n{Newtonsoft.Json.JsonConvert.SerializeObject(responseModelRef1)}\n");
            Console.WriteLine($"{nameof(responseModelRef2)}:\n{Newtonsoft.Json.JsonConvert.SerializeObject(responseModelRef2)}\n");
            Console.WriteLine($"{nameof(responseModelOut1)}:\n{Newtonsoft.Json.JsonConvert.SerializeObject(responseModelOut1)}\n");
            Console.WriteLine($"{nameof(responseModelOut2)}:\n{Newtonsoft.Json.JsonConvert.SerializeObject(responseModelOut2)}\n");

            Console.WriteLine("done.\n");

            return(true);
        }
        public void TestPingComplexModelOutAndRefSerialization()
        {
            this.fixture.sampleServiceMock
            .Setup(x => x.PingComplexModelOutAndRef(
                       It.IsAny <ComplexModelInput>(),
                       ref It.Ref <ComplexModelResponse> .IsAny,
                       It.IsAny <ComplexObject>(),
                       ref It.Ref <ComplexModelResponse> .IsAny,
                       It.IsAny <ComplexObject>(),
                       out It.Ref <ComplexModelResponse> .IsAny,
                       out It.Ref <ComplexModelResponse> .IsAny))
            .Callback(new PingComplexModelOutAndRefCallback(
                          (ComplexModelInput inputModel_service,
                           ref ComplexModelResponse responseModelRef1_service,
                           ComplexObject data1_service,
                           ref ComplexModelResponse responseModelRef2_service,
                           ComplexObject data2_service,
                           out ComplexModelResponse responseModelOut1_service,
                           out ComplexModelResponse responseModelOut2_service) =>
            {
                // check input paremeters serialization
                inputModel_service.ShouldDeepEqual(ComplexModelInput.CreateSample1());
                responseModelRef1_service.ShouldDeepEqual(ComplexModelResponse.CreateSample1());
                responseModelRef2_service.ShouldDeepEqual(ComplexModelResponse.CreateSample2());
                data1_service.ShouldDeepEqual(ComplexObject.CreateSample1());
                data2_service.ShouldDeepEqual(ComplexObject.CreateSample2());
                // sample response
                responseModelRef1_service = ComplexModelResponse.CreateSample2();
                responseModelRef2_service = ComplexModelResponse.CreateSample1();
                responseModelOut1_service = ComplexModelResponse.CreateSample3();
                responseModelOut2_service = ComplexModelResponse.CreateSample1();
            }))
            .Returns(true);

            var responseModelRef1_client = ComplexModelResponse.CreateSample1();
            var responseModelRef2_client = ComplexModelResponse.CreateSample2();

            var pingComplexModelOutAndRefResult_client =
                this.fixture.sampleServiceClient.PingComplexModelOutAndRef(
                    ComplexModelInput.CreateSample1(),
                    ref responseModelRef1_client,
                    ComplexObject.CreateSample1(),
                    ref responseModelRef2_client,
                    ComplexObject.CreateSample2(),
                    out var responseModelOut1_client,
                    out var responseModelOut2_client);

            // check output paremeters serialization
            pingComplexModelOutAndRefResult_client.ShouldBeTrue();
            responseModelRef1_client.ShouldDeepEqual(ComplexModelResponse.CreateSample2());
            responseModelRef2_client.ShouldDeepEqual(ComplexModelResponse.CreateSample1());
            responseModelOut1_client.ShouldDeepEqual(ComplexModelResponse.CreateSample3());
            responseModelOut2_client.ShouldDeepEqual(ComplexModelResponse.CreateSample1());
        }
예제 #3
0
 public bool PingComplexModelOutAndRef(
     ComplexModelInput inputModel,
     ref ComplexModelResponse responseModelRef1,
     ComplexObject data1,
     ref ComplexModelResponse responseModelRef2,
     ComplexObject data2,
     out ComplexModelResponse responseModelOut1,
     out ComplexModelResponse responseModelOut2)
 {
     Console.WriteLine($"{nameof(PingComplexModelOutAndRef)}:");
     return(PingComplexModelOutAndRefImplementation(
                inputModel,
                ref responseModelRef1,
                data1,
                ref responseModelRef2,
                data2,
                out responseModelOut1,
                out responseModelOut2));
 }
예제 #4
0
        public static void Main(string[] args)
        {
            Newtonsoft.Json.JsonConvert.DefaultSettings = (() =>
            {
                var settings = new Newtonsoft.Json.JsonSerializerSettings();
                settings.Formatting = Newtonsoft.Json.Formatting.Indented;
                settings.Converters.Add(new Newtonsoft.Json.Converters.StringEnumConverter {
                    CamelCaseText = true
                });
                return(settings);
            });

            var binding = new BasicHttpBinding();
            // todo: why DataContractSerializer not working?
            var endpoint       = new EndpointAddress(new Uri(string.Format("http://{0}:5050/Service.svc", Environment.MachineName)));
            var channelFactory = new ChannelFactory <ISampleService>(binding, endpoint);
            var serviceClient  = channelFactory.CreateChannel();
            var result         = serviceClient.Ping("hey");

            Console.WriteLine("Ping method result: {0}", result);

            var complexModel = new ComplexModelInput
            {
                StringProperty = Guid.NewGuid().ToString(),
                IntProperty    = int.MaxValue / 2,
                ListProperty   = new List <string> {
                    "test", "list", "of", "strings"
                },
                //DateTimeOffsetProperty = new DateTimeOffset(2018, 12, 31, 13, 59, 59, TimeSpan.FromHours(1))
            };

            var pingComplexModelResult = serviceClient.PingComplexModel(complexModel);

            Console.WriteLine($"{nameof(pingComplexModelResult)}:\n{Newtonsoft.Json.JsonConvert.SerializeObject(pingComplexModelResult)}\n");

            serviceClient.EnumMethod(out var enumValue);
            Console.WriteLine("Enum method result: {0}", enumValue);

            var responseModelRef1 = ComplexModelResponse.CreateSample1();
            var responseModelRef2 = ComplexModelResponse.CreateSample2();
            var pingComplexModelOutAndRefResult =
                serviceClient.PingComplexModelOutAndRef(
                    ComplexModelInput.CreateSample1(),
                    ref responseModelRef1,
                    ComplexObject.CreateSample1(),
                    ref responseModelRef2,
                    ComplexObject.CreateSample2(),
                    out var responseModelOut1,
                    out var responseModelOut2);

            Console.WriteLine($"{nameof(pingComplexModelOutAndRefResult)}: {pingComplexModelOutAndRefResult}\n");
            Console.WriteLine($"{nameof(responseModelRef1)}:\n{Newtonsoft.Json.JsonConvert.SerializeObject(responseModelRef1)}\n");
            Console.WriteLine($"{nameof(responseModelRef2)}:\n{Newtonsoft.Json.JsonConvert.SerializeObject(responseModelRef2)}\n");
            Console.WriteLine($"{nameof(responseModelOut1)}:\n{Newtonsoft.Json.JsonConvert.SerializeObject(responseModelOut1)}\n");
            Console.WriteLine($"{nameof(responseModelOut2)}:\n{Newtonsoft.Json.JsonConvert.SerializeObject(responseModelOut2)}\n");

            serviceClient.VoidMethod(out var stringValue);
            Console.WriteLine("Void method result: {0}", stringValue);

            var asyncMethodResult = serviceClient.AsyncMethod().Result;

            Console.WriteLine("Async method result: {0}", asyncMethodResult);

            Console.ReadKey();
        }