微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 如何在WCF中访问继承的对象属性?

案例是:

[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这样的基类不起作用,子道具无法访问,
堆栈溢出不起作用,这是我第二次发布此问题,但没有答案!

解决方法

我将json作为dto传递给MyService.
如果我添加“__type”:“Legal:#Dto”,MyService会将dto识别为Legal.
然后(dto as Legal).ManagerName有价值

这个解决方案正在工作,实际上传递__type并不方便.我会感谢您提出更好的建议.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐