我可能描述错了,但这是我的困境,我有一系列接口,比如IBreadcrumbRetriever
. 它们的实现完全不同,具体取决于它们在我的站点上的位置,我用它HttpContext.Current.Request.Path
来确定。
因此,在我的具体类中,我现在有几个 if 语句来确定要返回的项目(为简单起见,我们说List<string>
)。这对我来说是一种代码味道。
我真正想要的是,不知何故,我觉得 IoC 和 Castle Windsor 可以在这里帮助我,确定用户点击页面是否满足特定条件并将正确的容器绑定到该条件。所以我会有类似的东西
if (HttpContext.Current.Request.Path == some condition)
IBreadcrumbRetriever is ImplementedBy IsInProductAreaRetriever
这是一个好主意吗?如果是这样,我会怎么做?还是我像面包屑工厂类一样创建并使用“ .DependsOn(HttpContext.Current.Request.Path)
”扩展来实现我正在做的事情?