【发布时间】:2010-02-10 08:06:10
【问题描述】:
我目前正在使用 StructureMap,通常使用基于约定 (Scan()) 的自动配置,并且我希望将基于装饰器的缓存添加到管道中。
如果我手动配置它就可以了,但是Scan() 在您获得大量依赖项时非常方便...我正在玩弄注意缓存建议 在接口上,例如:
public interface IFoo {
[CacheDuration(20)] // cache for 20 minutes
string[] DoSomethingReusable();
SomeType DoSomethingNonReusable(int key); // not cached
}
的想法是,通过在StructureMap 的扫描中添加自定义“约定”(非常简单),它可以发现一个或多个方法被装饰用于缓存,并自动将生成的缓存装饰器注入其中类型的管道(从接口/方法名称和参数值生成缓存键)。
从好的方面来说,它使添加缓存变得非常轻松 - 只需稍微装饰一下界面即可;但是代码有味道吗?和/或我是否在复制已经解决的问题?
【问题讨论】:
标签: c# .net inversion-of-control structuremap aop