假设我有一个返回Post
s 列表的存储库。存储库接口有一个GetAll()
方法可以执行它的建议。
现在按照我不应该将域逻辑放入存储库的理论,我想拦截对具体GetAll()
方法的调用,以便我可以将以下逻辑添加到GetAll()
结果中:
return GetAll().OrderByDescending(p => p.Posted).ToList();
我想拦截它的原因是因为(1)我不想让客户端记住调用扩展方法(OrderByDescending
或一些无用的包装器),我希望每次都调用它并且(2)我不希望我的所有具体实现都必须记住对GetAll()
结果进行排序-我希望将此逻辑放在任何存储库外部的单个位置。
最简单的方法是什么?
我已经在使用StructureMap,所以如果我可以用它拦截它可能是一个低成本的选择。但我不认为 SM 拦截方法调用,只是对象实例的创建?
我需要使用代理或混合模式吗?我需要全力以赴使用 Castle Dynamic Proxy吗?还是我应该考虑另一种方法或组合?
我对我上面的特定示例的具体建议非常感兴趣。我是 AOP 的新手,所以请温柔一点。