C# 以下哪一种是更好的体系结构/设计方法?
目标C# 以下哪一种是更好的体系结构/设计方法?,c#,.net,vb.net,architecture,dependency-injection,C#,.net,Vb.net,Architecture,Dependency Injection,目标 编写有效的Active Directory库,以简化负责创建域控制器Active Directory访问模型的技术人员的工作。此库必须允许以下操作: 基本操作:增加、修改、删除、列出条目 条目可以是组织单位、组或用户(目前无需更多) 我想用一个类来表示我们想要使用的领域 public class Domain { public Domain(string root) { Root = root; Entries = new Dictionary<
编写有效的Active Directory库,以简化负责创建域控制器Active Directory访问模型的技术人员的工作。此库必须允许以下操作:
public class Domain {
public Domain(string root) {
Root = root;
Entries = new Dictionary<string, IDirectoryEntry>();
}
public string Root { get; private set; }
public Dictionary<string, IDirectoryEntry> Entries { get; private set; }
}
现在,请注意,在实例化IDirectoryEntry
接口时,我使用Domain.Entries.add()
将条目添加到给定的域中
问题IDirectoryEntry
实例的Domain
属性,这是一种好的做法吗Domain.Entries.Add()
行消失,并在我的Domain
类中有一个方法将条目添加到域中public class Domain {
//See above for other members.
public void AddEntry<T>(T entry) {
Entries.Add(entry.Name, entry);
}
}
公共类域{
//其他成员见上文。
公共作废补遗(T条目){
条目.添加(条目.名称,条目);
}
}
- 根据您的说法,在这种情况下,什么是最好的体系结构?
这两种体系结构似乎都足够好,值得考虑,因此我有点困惑,它希望为图书馆最终用户提供最简单的方式
域
实例的人都可以删除任何给定条目
对于问题2,这很可能是我自己如何实现它的,除非我有令人信服的理由不这么做。谢谢你,内特。不幸的是,我的客户禁止我使用.NET2.0,否则我会使用3.5。此外,我并不害怕被画进一个角落,因为正如您可能已经注意到的那样,我打算以更灵活的方式编写代码。因此,我仍然对这个问题感到疑惑。最后,这两种方法都是等效的,只是如果有一天我想从广告中分离一个条目,我想我必须删除依赖注入。假设我想针对底层数据库管理安全性。否则,我认为这种依赖注入是合理的。你认为呢?我看不出有任何问题需要在其他类的构造函数中使用
域
对象;虽然它是紧密耦合的,但如果您迁移出LDAP,安全组
和组织单位
的概念很可能会消失,并被其他东西取代。他们对您构建.NET 3.5中已有的东西没有问题,但他们不允许您使用3.5?这一点毫无意义。当你提到任何引用实例odDomain
的人都可以删除任何给定条目时,你在回答Q1时提到了这一点。我以前没想过。很有趣!=)@OJ:我完全同意!尽管如此,我可能理解他们的担忧,因为他们仍在使用Windows 2000。他们只是迁移到Vista,这是因为2000不再受支持。我猜他们会担心,如果某些系统被迫更新到,它们将不支持.NET3.5。这是一个政府组织,因此您可能会理解,这可能会造成的所有麻烦都是由于不兼容的原因而无法工作的。此外,负责这一选择的有机建筑师非常固执。
public class Domain {
//See above for other members.
public void AddEntry<T>(T entry) {
Entries.Add(entry.Name, entry);
}
}