2012-03-14 2 views
0

여기에 제 디자인이 적합한 지 궁금합니다. IOC의의 autofac 컨테이너의 XML 구성IoC 컨테이너를 사용하여 Service 클래스의 ServiceConfig를 해결하는 적절한 디자인

public class Service 
{ 
    private ServiceConfig Config { get; set; } 

    //inner class to store configuration 
    public class ServiceConfig 
    { 
    //a lot of configuration properties 
    } 

    //ctor - self resolve Config dependency - wondering whether this is very bad ? 
    public Service() 
    { 
    //get configuration class from IoC container - accessible as Singleton 
    Config = ContainerResolver.Instance().Resolve<Service.ServiceConfig>(); 
    } 

    //other code that provides functionality making use of Config property 
    //... 
} 

당신은 내가 내 구성 속성을 지키려고 내부 ServiceConfig 클래스가 볼 수 있듯이 내가 등록 그들 모두 :.

나는 클래스가 있습니다. 가능한 한 OOD 전문가에게 몇 마디 말을하고 싶습니다. 안부

, 누가 처음

+1

이 질문인가? – Jodrell

+0

예, 제가 한 일이 좋은 습관인지 여부를 알아야합니다. – user1250785

+0

전체적인 아이디어는 Configuration 클래스를 Serivce 클래스 종속성으로 제공하는 것입니다. 구성 클래스 등록 정보 (여기에 표시되지 않음)는 컨테이너 구성에 등록됩니다. 구성 클래스는 컨테이너에 의해 해결되어야합니다. 내 주요 관심사는 서비스 클래스 생성자에서 Config 속성을 확인하는 것입니다. 이것이 좋은 방법인지 여부를 모르십니까? – user1250785

답변

1

는, 그래,이 나쁜 디자인입니다. 인스턴스가 "루트"이거나 컨테이너를 통해 유형을 쉽게 확인할 수없는 경우에만 컨테이너와 직접 상호 작용해야합니다. 루트 인스턴스는 일반적으로 시작 코드 또는 부트 스트 래퍼입니다. 컨테이너 명확 이미 방법 ServiceConfig를 해결하기 위해 알고 있기 때문에이 경우

, 왜 이런 식으로하지 :

public class Service 
{ 
    private ServiceConfig Config { get; set; } 

    public class ServiceConfig 
    { 
    } 

    public Service(ServiceConfig serviceConfig) 
    { 
     Config = serviceConfig; 
    } 

    ... 
} 
관련 문제