You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WCF(SOAP)服务实现:返回具有相同ContaminationID的两个人员列表

WCF接口调整方案

1. 新增自定义返回结果数据契约

你需要新增一个数据契约类,用来封装两个列表的返回结果,WCF才能正确序列化返回两个集合:

[DataContract]
public class ContaminationPersonResult
{
    [DataMember]
    public List<Infected> MatchedInfecteds { get; set; }

    [DataMember]
    public List<Isolated> MatchedIsolateds { get; set; }
}

2. 修复Isolated类的序列化注解

你当前的Isolated类没有添加[DataContract]注解,WCF无法正确序列化该类的实例,需要补上:

[DataContract] // 新增该注解
public class Isolated : Infected
{
    [DataMember]
    public bool Internado { get; set; }

    [DataMember]
    public string LocalInternamento { get; set; }

    [DataMember]
    public string DataInternamento { get; set; }
}

3. 修改服务契约接口

修改IInfecteds.cs中GetAllContaminationID方法的返回值类型为你新增的返回类:

[ServiceContract]
public interface IInfecteds
{
    [OperationContract]
    List<Infected> GetNome(string nomefiltro ="");

    // 修改返回值为自定义的结果类
    [OperationContract]
    ContaminationPersonResult GetAllContaminationID(int contaminationID);
}

4. 修改服务实现逻辑

重写Infecteds.svc.cs中的GetAllContaminationID方法,分别过滤两个列表后返回:

public ContaminationPersonResult GetAllContaminationID(int contaminationID)
{
    return new ContaminationPersonResult
    {
        // 过滤确诊人员列表
        MatchedInfecteds = infecteds.Where(p => p.ContaminationID == contaminationID).ToList(),
        // 过滤隔离人员列表
        MatchedIsolateds = isolateds.Where(p => p.ContaminationID == contaminationID).ToList()
    };
}

额外注意事项

  • 你当前Infected类中的Datanasc属性定义为int类型,初始化时写的2000-23-12是算术表达式,运行时会计算为1965,不符合日期存储需求,建议将该属性类型改为DateTime。
  • 初始化列表赋值时,日期格式需要符合你定义的属性类型要求,避免运行时报错。

内容的提问来源于stack exchange,提问作者Diogo R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 00:15:07