2011-07-29 4 views
2

xml 구성과 함께 autofac 프레임 워크를 사용하고 있습니다. 나는 질문이있다, 여기 상황이있다. 인터페이스를 구현하는 객체의 배열을 보유하고있는 ApplicationConfig라는 클래스가 있습니다. 그리고 두 가지 방법이 있습니다. 시작과 끝. 아이디어는 응용 프로그램의 시작 부분에서 시작 메서드를 호출하고 끝에서 마침을 호출합니다.autofac xml 구성

개체를 설정하려면 가변 개수의 인수가있는 SetConfigurations를 호출해야합니다.

public class ApplicationConfig 
{ 
    private IAppConfiguration[] configurators; 

    public void SetConfigurations(params IAppConfiguration[] appConfigs) 
    { 
     this.configurators = appConfigs ?? new IAppConfiguration[0]; 
    } 

    public void Start() 
    { 
     foreach (IAppConfiguration conf in this.configurators) 
      conf.OnStart(); 
    } 

    public void Finish() 
    { 
     foreach (IAppConfiguration conf in this.configurators) 
      conf.OnFinish(); 
    } 
} 

XML

<component type="SPCore.ApplicationConfig, SPCore" 
    instance-scope="single-instance"> 
</component> 

내가 XML을 통해 SetConfigurations 대신에, 응용 프로그램의 시작에서 시작됩니다 구성 요소를 구성 할 수 있다면 난 그냥 궁금 : 여기

는 코드입니다. 앱의 코드에 SetConfigurations을 사용합니다.

그래서 나는 이렇게하고 싶습니다.

클래스 생성자

public ApplicationConfig(params IAppConfiguration[] appConfigs) 
{ 
    this.configurators = appConfigs; 
} 

내가 다른 구성 요소는 생성자에 대한 매개 변수를 지정하는 방법을 모른다

<component type="SPCore.ApplicationConfiguration.ConfigurationParamters, SPCore" 
    instance-scope="single-instance"> 
</component> 

<component type="SPCore.ApplicationConfig, SPCore" instance-scope="single-instance"> 
    <parameters> 
     <parameter>--Any componet--</parameter> 
     <parameter>--Any componet--</parameter> 
     .... 
     .... 
     <parameter>--Any componet--</parameter> 
    </parameters> 
</component> 

.. 그래서

, 나는 할 수 있도록하려면 XML

컴파일하지 않고 앱을 구성 할 수 있습니다.

답변

2

Autofac의 XML 구성은이 시나리오를 지원하지 않습니다.

가장 간단한 방법은 구성 개체에 IStartable (http://code.google.com/p/autofac/wiki/Startable)와 IDisposable을 사용하는 것입니다 후 당신이있어 무엇을 달성하고 ApplicationConfig 클래스를하지합니다 조금도. Autofac은 Start()Dispose()을 자동으로 호출합니다.

ApplicationConfig 클래스에서 시작/완료 프로세스를 조정해야하는 경우 등록 된 IApplicationConfiguration 구성 요소를 제어 할 수 있습니다. 기본적으로 Autofac은 의 구현을 모두 appConfigs 생성자 매개 변수에 으로 삽입합니다. 이는 배열이고 Autofac은 배열 유형에 대해 특별한 처리를하기 때문입니다. 필요한 IApplicationConfiguration 개 각각에 <component> 개의 태그를 포함하고 필요하지 않은 태그는 제외하십시오. 이 도움이

희망,