【发布时间】:2011-05-11 13:40:20
【问题描述】:
我正在编写一个类库来与域 Active Directory 交互。在我的对象模型中,我有以下内容:
- 域;
- 组织单位;
- 组;
- 用户。
在我的 Domain 对象中,我有一个 Entries 属性和一个 Add() 方法。
public class Domain {
// The ReadOnlyDictionary<TKey, TValue> is a custom wrapper over an IDictionary.
public ReadOnlyDictionary<string, IDirectoryEntry> Entries { get; }
public void Add(IDirectoryEntry entry) {
Entries.Add(entry.Name, entry);
}
}
现在,假设我有以下代码测试更改。
[Test()]
public void ChangeTesting {
Domain domain = new Domain("LDAP://...");
Group g = new Group("groupName");
domain.Add(g);
g.Name = "ChangedName";
Assert.IsTrue(domain.ContainsKey("ChangedName"));
}
为了您的信息,我实现了INotifyPropertyChanged 接口来简化我的生活,但我似乎没有找到一种方法让它按我想要的方式工作。或许是我做的不对,至于不同方法的位置,我不知道。
如何让我的Domain 知道其中一个Entries 中发生的更改,以便TKey 的值也发生更改?
这是需要的,因为可能会添加一个条目,更改其名称同时添加一个具有实际内部条目的“旧”名称的新条目,并导致冲突等。最终导致测试失败.但我想让它像实际一样通过。
还有其他更好的方法或解决方法吗?
【问题讨论】:
-
我认为最简单的解决方法是删除并再次添加一个项目。
-
这也是我想到的。关键是对用户来说尽可能的简单,但最终还是给自己添麻烦也好! =) 谢谢你的意见! =)
标签: c# vb.net dictionary inotifypropertychanged