我在写一个WCF服务以从Active Directory返回有关某个人的信息。除了返回该人的详细信息外,我还希望它返回其经理的用户名和全名。WCF数据与对象图中的分层数据合同
我开始编码这是...
[DataContract]
public class ADPerson
{
Guid objectGuid;
Guid managerObjectGuid;
string username;
string displayname;
[DataMember]
public string Username
{
get { return this.username; }
set { this.username = value; }
}
[DataMember]
public string DisplayName
{
get { return this.displayName; }
set { this.displayName = value; }
}
[DataMember]
public ADPerson Manager
{
get { return new ADPerson(this.managerObjectGuid); }
set { this.managerObjectGuid = value.objectGuid; }
}
/* ... */
}
...但后来意识到这没有停止条件;即它将遍历对象图直到它到达没有定义管理者的用户(即CEO)。
有没有一种很好的方法可以使这个停止条件到位,同时仍然能够重用ADPerson类,或者我是否需要提供另一种获取管理器细节的方法(例如,将这些细节设置为可见到他们自己的领域并从Manager属性中删除DataMember,或者创建一个ADManager类,它提供了ADPerson字段的子集,而不是经理的经理?
这是解决问题的另一种情况,很简单,但知道问题的最佳解决办法是让我烦恼
在此先感谢,
JB
将所有的经理人包括在内,并不是最差的包含模式。它应该导致可接受的数字。 –
的确,在最糟糕的情况下,深度可能只有20人左右,但我喜欢将事情保持得相对紧张(即拥有80%的回报,因为冗余信息并不理想 - 我宁愿只是提出要求雇员和他们的经理如果可能的话)。 – JohnLBevan