SimpleInjector 및 MVC를 사용하는 사이트가 있고 구조적으로 잘못 될 위치를 확인하려고합니다.생성자에서 서비스가있는 전역 필터 용 DI 컨테이너 구성
public static class DependencyConfig
{
private static Container Container { get; set; }
public static void RegisterDependencies(HttpConfiguration configuration)
{
*snip*
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters, Container);
}
}
을 그리고 내 RegisterGlobalFilters은 다음과 같습니다 :
내 DI 컨테이너가이 설정되어 매장 내 키오스크 나에 (이 웹 사이트를 통해)
public static class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters, Container container)
{
filters.Add(new HandleErrorAttribute());
filters.Add(container.GetInstance<OrderItemCountActionFilterAttribute>());
if (container.GetInstance<ISiteConfiguration>().ConfiguredForExternalOrders)
{
filters.Add(container.GetInstance<StoreGeolocationActionFilterAttribute>());
}
filters.Add(container.GetInstance<StoreNameActionFilterAttribute>());
}
}
가게가 취할 수있는 주문 집에서 온라인으로. 외부 주문은 가장 가까운 상점과 관련하여 정보를 고객에게 표시하기 위해 위치 정보를 지정해야합니다. 그러나 이것은 글로벌 필터에서 서비스 로케이터로 컨테이너를 사용해야한다는 것을 의미합니다. 즉, DI 컨테이너의 전역 필터에 대한 호출을 숨겨야합니다. 이 모든 것은 나에게 반 패턴을 닮거나이 일을하는 더 좋은 방법이되어야한다고 생각합니다.
나는 Ploeh 블로그를 읽었는데 그 항목을 완전히 놓쳤지만 MVC 및 전역 필터를 구현하는 방법을 결정할 수없는 것처럼 보입니다. 제 생각에는이 링크 텍스트가 없기 때문에이 답변이 링크 전용 답변으로 표시 될지 걱정됩니다. –
@CBauer 댓글이 너무 길었습니다. [Steven의 블로그] (https://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=98)에 대한 실례가 있습니다. – qujck
Steven의 블로그 게시물은 MVC가 아닌 WebApi 용 코드입니다. –