Я мог бы описать это неправильно, но вот моя дилемма, у меня есть ряд интерфейсов, таких как 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)
» для достижения того, что я делаю?