2012-05-28 2 views
1

Windsor의 "Per Graph"라이프 스타일을 시뮬레이트하여 올바른 방식으로 내 물체를 해결하려고합니다. 나는 Bound 라이프 스타일을 시도했지만 어떤 어려움없이, 아마 주제에 대한 지식 부족 때문일 것입니다. 나는 다음과 같은 예제 코드로 표현된다 필요가있는 무엇 : 그것 때문에 모든 작품Castle Windsor의 "Per Graph"라이프 스타일 시뮬레이션

class Program 
{ 
    static void Main(string[] args) 
    { 
     var container = new WindsorContainer(); 
     container.Register(
      Component.For<ClassA>().LifestyleBoundTo<ClassC1>(), 
      //Component.For<ClassA>().LifestyleBoundTo<ClassC2>(), 
      Component.For<ClassB1>().LifeStyle.Transient, 
      Component.For<ClassB2>().LifeStyle.Transient, 
      Component.For<ClassC1>().LifeStyle.Transient, 
      Component.For<ClassC2>().LifeStyle.Transient); 

     var c1 = container.Resolve<ClassC1>(); 
     Assert.AreSame(c1.B1.A, c1.A); 

     var c2 = container.Resolve<ClassC2>(); 
     Assert.AreSame(c2.B2.A, c2.A); 

     Assert.AreNotSame(c1.A, c2.A); 
    } 
} 

class ClassA 
{ 
} 

class ClassB1 
{ 
    public ClassB1(ClassA a) 
    { 
     A = a; 
    } 

    public ClassA A { get; set; } 
} 

class ClassC1 
{ 
    public ClassC1(ClassA a, ClassB1 b1) 
    { 
     A = a; 
     B1 = b1; 
    } 

    public ClassA A { get; set; } 
    public ClassB1 B1 { get; set; } 
} 

class ClassB2 
{ 
    public ClassB2(ClassA a) 
    { 
     A = a; 
    } 

    public ClassA A { get; set; } 
} 

class ClassC2 
{ 
    public ClassC2(ClassA a, ClassB2 b2) 
    { 
     A = a; 
     B2 = b2; 
    } 

    public ClassA A { get; set; } 
    public ClassB2 B2 { get; set; } 
} 

} 
+0

가 나는 또한 유사한 문제에 직면하고있다 –

+0

답을 업데이트 : http://stackoverflow.com/questions/25064516/dependency-injection-lifestyle-service-shared-instance-between-2-instances-of?noredirect = 1 # comment39052582_25064516 답변을 찾으면 알려주세요. –

답변

0

좋아 예상대로.

첫 번째 주장은 예상대로 성공합니다. 두 번째 문제는 ClassA/ClassC1에 해당하며 두 번째 해결 방법은 그래프에 해당 클래스의 인스턴스가 없으므로 예상대로 실패합니다.

+0

전체 테스트 코드 – Antonio

+0

으로 게시물을 업데이트했습니다. ClassC2에 대해서도 ClassA를 범위 지정하는 방법이 있습니까? 내 프로젝트에는 많은 핵심 구성 요소에서 참조하는 특수 클래스가 있습니다. 각 핵심 구성 요소마다 해당 특수 클래스의 공유 인스턴스 하나만 있으면됩니다. – Antonio

+0

핵심 구성 요소에는 모두 구현되는 공통 인터페이스가 있습니까? –

관련 문제