使用WCF服务返回List <T>

iJa*_*Jay 3 c# wcf

我上了一堂Employee课,每个员工都有一份申请表.是否可以将列表AppliedLeave作为[DataMember]WCF中的列表?

[DataContract]
public class Employee
{
    [DataMember]
    public string UserID { get; set; }

    [DataMember]
    public int EmployeeNumber { get; set; }

    [ForeignKey("EmployeeUserID")]
    [DataMember]
    public List<Leave> AppliedLeave
    {
        get { return _appliedLeaves; }
        set { _appliedLeaves = value; }
    }

    private List<Leave> _appliedLeaves = new List<Leave>();
    ...
 }
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以做到这一点?

感谢您对此事的考虑

我延伸我的问题

这是我的休假班:

[DataContract]
public class Leave
{

    [Key()]
    [DataMember]
    public Guid LeaveId { get; set; }

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

    [DataMember]
    public DateTime StartDate { get; set; }

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

}
Run Code Online (Sandbox Code Playgroud)

这显示了ServiceContract ---->

[ServiceContract]
public interface IEmployeeService
{
    [OperationContract]
    Employee GetEmployeeByUserId(string userId);

    [OperationContract]
    void AssignSupervisor(string userId, string supervisorUserId);

    [OperationContract]
    void DeleteEmployeeByUserId(string userId);

....
}
Run Code Online (Sandbox Code Playgroud)

在客户端应用中,

EmployeeServiceClient employeeService = new EmployeeServiceClient();

员工employee = employeeService.GetEmployeeByUserId(id);

但是,当员工从服务中收集时,它会显示Null for leaves,

在此输入图像描述

有人能帮助我吗?我在这做错了什么?

Til*_*lak 5

是的,可以从WCF服务操作返回泛型.

但默认情况下,它们会在客户端转换为Array.这可以在代理生成时自定义.

WCF:序列化和泛型

此外,您还必须使用KnownTypeAttribute使用可以解析泛型的所有类型来装饰服务.

已知类型和通用解析器