2017-03-27 9 views
2

안녕하세요. 캐슬 윈저 프로젝트에 문제가 있습니다.캐슬 윈저 다이내믹 값

container.Resolve<ILogin>(new { Login = textBox1.Text, password =textBox2.Text });

로그인의 값과 암호를 한 번만 설정 :이 방법으로 몇 가지 매개 변수를 전달하려고 메신저가

. 다음으로, 텍스트 상자 값을 변경하고 버튼을 다시 한 번 클릭하면 로그인 값과 비밀번호가 여전히 동일합니다. 이 매개 변수를 어떻게 바꿀 수 있습니까? 고맙습니다.

답변

2

ILogin의 구현이 컨테이너에 싱글 톤으로 등록되어 있으므로 한 번만 구성됩니다. 두 번째로 Resolve()를하면 이미 생성되고 값은 고정됩니다. 대신 .Transient로 변경해보십시오. 어떻게하는지에 대한 자세한 정보가 필요하면 "Windsor lifestyles"를보세요.

Btw, "컨테이너"를 직접 사용하는 것은 일반적으로 잘못된 것의 표시입니다. 현명한 디자인입니다. 때로는 다른 방법이 없기 때문에이 주석을 소금 한 덩어리로 가져 가십시오.

+0

고맙습니다. 작동하지만 다른 문제가 있습니다. 두 구성 요소가 포함 된 하나의 구성 요소가 있어야합니다. 그리고 이렇게하면 메신저 : container.Resolve ("LogUser") .log.Login(); 나는 예외가있다 : "만족할 수있는 의존성이 있기 때문에 'LogUser'컴포넌트를 생성 할 수 없다." – Milan90

+0

이 예외에 대한 세부 사항에서 "MAIN"구성 요소가 제공된 두 구성 요소에 대한 매개 변수가 제공되지 않았습니다. – Milan90