我有一个Employee
课程,每个员工都有一个应用叶子列表。是否可以在WCF中将列表AppliedLeave
作为[DataMember]
?
[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>();
...
}
还有其他办法吗?
感谢您对此事的考虑
我延伸了我的问题
这是我的休假班:
[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; }
}
这显示了ServiceContract ----&gt;
[ServiceContract]
public interface IEmployeeService
{
[OperationContract]
Employee GetEmployeeByUserId(string userId);
[OperationContract]
void AssignSupervisor(string userId, string supervisorUserId);
[OperationContract]
void DeleteEmployeeByUserId(string userId);
....
}
在客户端应用程序中,
EmployeeServiceClient employeeService = new EmployeeServiceClient();
员工雇员= employeeService.GetEmployeeByUserId(id);
但是当员工从服务中收集时,它会显示Null for leaves,
有人能帮助我吗?我在这里做错了什么?
答案 0 :(得分:5)
是的,可以从WCF服务操作返回泛型。
但默认情况下,它们会在客户端转换为Array。这可以在代理生成时自定义。
WCF: Serialization and Generics
此外,您还必须使用KnownTypeAttribute来解析可以解析泛型的所有类型的服务。
答案 1 :(得分:2)
您可以使用IList<T>
代替List<T>
。
答案 2 :(得分:2)