加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 21:22:32 所属栏目:百科 来源:网络整理
导读:案例是: [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] publi
案例是:

[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并不方便.我会感谢您提出更好的建议.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读