none
WCF Получить пользовательский тип данных RRS feed

  • Вопрос

  • Добрый день!

    Я подключаюсь к своей службе программным образом. Не используя ссылку на службу.

    Как мне получить объект пользовательского типа?

    Это сервер (служба WCF)

    [DataContract]
        public class MathResult
        {
            [DataMember]
            public double sum;
            [DataMember]
            public double subtr;
            [DataMember]
            public double div;
            [DataMember]
            public double mult;
        }

        [ServiceContract]
        public interface IMyMath
        {
            [OperationContract]
            MathResult Total(int x, int y);
        }

        public class MyMath : IMyMath
        {
            public MathResult Total(int x, int y)
            {
                MathResult mr = new MathResult();
                mr.sum = x + y;
                mr.subtr = x - y;
                if (y != 0) mr.div = x / y;
                mr.mult = x * y;
                return mr;
            }
        }

        class Program
        {
            static void Main(string[] args)
            {
                ServiceHost sh = new ServiceHost(typeof(MyMath), new Uri("http://localhost/MyMath/ep1"));
                sh.Open();
                Console.WriteLine("Для завершения нажмите <ENTER>\n");
                Console.ReadLine();
                sh.Close();
            }
        }

    Это клиент

    [DataContract]
        public class MathResult
        {
            [DataMember]
            public double sum;
            [DataMember]
            public double subtr;
            [DataMember]
            public double div;
            [DataMember]
            public double mult;
        }

        [ServiceContract]
        public interface IMyMath
        {
            [OperationContract]
            MathResult Total(int x, int y);
        }

        class Program
        {
            static IMyMath proxy;
            static void Main(string[] args)
            {
                ChannelFactory<IMyMath> factoryInfoService = new ChannelFactory<IMyMath>(new BasicHttpBinding(), new EndpointAddress("http://localhost/MyMath/ep1"));
                proxy = factoryInfoService.CreateChannel();
                MathResult mr = proxy.Total(35, 38);
                Console.WriteLine("Результат: {0} {1} {2} {3}", mr.sum, mr.subtr, mr.div, mr.mult);
                Console.WriteLine("Для завершения нажмите<ENTER>.\n\n");
                Console.ReadLine();
            }
        }

    Но я получаю пустой результат, что я делаю не так подскажите.

    27 декабря 2013 г. 8:20

Ответы