如何在WCF中获得对继承对象属性的访问

本文关键字:对象 继承 属性 访问 WCF | 更新日期: 2023-09-27 18:05:54

情况是:

[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为合法类型并访问子属性?

我想存储dto,我不想为info的每个子元素提供很多服务。

传递泛型给服务不工作,wsdl错误,接口如IInfo作为输入参数不工作,类型转换错误,像Info这样的基类不起作用,子道具不可访问,堆栈溢出不工作,这是我第二次我张贴这个问题,但没有答案!

如何在WCF中获得对继承对象属性的访问

我正在传递一个json作为dto到MyService。如果我添加"__type":"Legal:#Dto", MyService会识别该Dto为合法的。然后(作为法律)。ManagerName有值

这个解决方案是有效的,实际上传递__type是不方便的方式。如果你有更好的建议,我将非常感谢。