Как получить доступ к наследуемым свойствам объекта в WCF? - PullRequest
4 голосов
/ 17 августа 2011

Случай:

[ServiceContract]
public interface IInfo
{
    [DataMember]
    int Id{get;set;}
}

[DataContract]
[KnownType(typeof(Legal))]
public class Info
{
    [DataMember]
    public int Id { get; set; }
}

[DataContract]
public class Legal : Info
{
    [DataMember]
    public string ManagerName { get; set; }
}

[ServiceContract]
[ServiceKnownType(typeof(Legal))]
public interface IMyService
{
    [OperationContract]
    int DoWork(Info dto);
}

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class MyService : IMyService
{

    public int DoWork(Info dto)
    {
        string name;
        if (dto is Legal)
            name = (dto as Legal).ManagerName;
        return dto.Id;
    }
}

Можно ли узнать dto как тип Legal и иметь доступ к дочерним свойствам?

Я хочу сохранить dto и не могуне нужно иметь много служб для каждого дочернего элемента информации.

Передача обобщенных данных в службу не работает, ошибка wsdl, интерфейс, такой как IInfo, в качестве входного параметра не работает, ошибка приведения, базовый класс, такой как Info, нене работает, дочерние реквизиты недоступны, переполнение стека не работает, это мой второй раз, когда я отправляю этот пробник, но ответа нет!

1 Ответ

1 голос
/ 18 августа 2011

Я передаю json как dto в MyService. Если я добавлю «__type»: «Legal: #Dto», MyService распознает dto как Legal. затем (dto как Legal) .ManagerName имеет значение

Это решение работает, на самом деле передача __type не удобна. Я буду признателен за ваши лучшие предложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...