存储库模式 - 根据类型查找存储库

时间:2009-08-11 10:16:44

标签: c# nhibernate repository

我目前正在处理的应用程序大量使用NHibernate的存储库模式。我们有一个通用的基础存储库类,它实现了标准的获取和保存。然后,此类由每种类型的存储库继承。然后,这些存储库可以添加自己的特定于类型的方法(并覆盖保存并在必要时获取)。

这很有效,从关注点的角度来看,这意味着我们的业务对象是POCO,我们的存储库类处理保存的细节。实际上,当我们有一个类型能够说“让我获得可以保存此类型的存储库”时,它将非常有用。有什么模式可以用来做到这一点?我需要维护自己的查找表吗?可以以某种方式自动维护查找表吗?

2 个答案:

答案 0 :(得分:6)

看起来您准备好了依赖注入框架

答案 1 :(得分:0)

使用反射和一些命名约定,例如:

DomainObjectNameRepository

您可以使用Activator.CreateInstance动态实例化您要查找的存储库。只要您知道如何使用上面的示例命名它们。其他明智的你也有注册表模式。例如,在web.config文件中创建一个映射元素,然后在Registry中有一个名为ResolveRepository的方法。

Registry.ResolveRepositoryFor<T>() where T:DomainObject;

另一个好处是你可以使用IOC,用例如Unity来控制反转。

映射文件将DOmainObject映射到Repository,然后在注册表方法内部,然后它可以使用Unity来解析该特定存储库的实例,并将它们作为单例实例。

安德鲁

相关问题