none
Передача наследника в WCF RRS feed

  • Вопрос

  • Добрый день. Вопрос такой. У меня есть класс User, есть класс наследник UserExtended. Есть метод в WCF сервисе который возвращает объект класса User:

    [OperationContract]
    User SomeMethod()

    Внутри метода я пользуюсь объектом класса UserExtended и пытаюсь его вернуть

            public User SomeMethod()
            {
                UserExtended user = new UserEx()
                {
                    Name = "name",
                    LastName = "last name",
                    ID = 30,
                    ServirString = "some string",
                };
                return user as User;
            }

    При обращении с клиента получаю ошибку. Я так понимаю что это происходит из-за того что клиент получает объект класса наследника и пытается его десериализовать. Но суть в том что я не хочу передавать клиенту объект UserExtended, мне нужен именно User. Если создавать новый объект User копируя поля из UserExtended все работает, но подход очевидно не верный. Перегрузить операцию приведения для класса наследника мне не дает .net.

    Я пробовал воспользоваться аттрибутом KnownType, но он требует реализовать этот тип на клиенте, а он там не нужен. Т.е. это противоречит смыслу передавать именно объект класса предка.  

    29 сентября 2012 г. 12:09

Ответы

  • Если Вам не нужно также передавать и сериализовывать производный класс, то можете попробовать установить [DataContract (Name = "User")] данный атрибут на производный класс.
    29 сентября 2012 г. 12:46
    Модератор

Все ответы