我正在编写 WCF 服务以从 Active Directory 返回有关人员的信息。除了返回此人的详细信息外,我还希望它返回其经理的用户名和全名。
我开始将其编码为:...
[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