2013-04-06 2 views
1

유니티 DI 컨테이너가 객체 생성을 완료 한 후 특정 루틴을 실행하도록 지시하는 방법이 있습니까?포스트 건설 루틴을 실행하는 유니티

아이디어는 유니티가 객체 생성을 처리하기를 원하지만, 나중에 나 자신의 루틴 세트로 생성 된 객체를 보완하기를 원합니다.

[TestClass] 
public class UnitTests 
{ 
    [TestMethod] 
    public void Initialize_should_get_called_on_object_construction() 
    { 
     var container = new UnityContainer(); 

     container.RegisterType<IDependency, Dependency>(
      new InjectionMethod("Initialize" /*, parameters if present */) 
     ); 

     var dependency = container.Resolve<IDependency>(); 

     Assert.IsNotNull(dependency); 
     Assert.AreEqual("init", dependency.Value); 
    } 
} 

public interface IDependency 
{ 
    string Value { get; set; } 
    void Initialize(); 
} 

public class Dependency : IDependency 
{ 
    public string Value { get; set; } 

    public void Initialize() { 
     this.Value = "init"; 
    } 
} 

:. 초기화 로직이 같은 클래스에있는 경우 기본적으로 내가 대상 건설을 인수 할 경우 InjectionFactory 달리, 나는 유니티에 연결하기 전에 먼저 작업을 실행할 그래서

+0

맞춤형 사례는 어떻게 게시 할 수 있습니까? – nemesv

답변

2

당신은 InjectionMethod을 사용할 수 있습니다 그렇지 않다면 추상 공장 인을 만들어야합니다.

+0

네, 이것은 갈 길입니다. 주입 메소드에 매개 변수가있는 경우 컨테이너는 생성자 매개 변수와 마찬가지로 매개 변수를 해결합니다. –