이름 (= 키)으로 구분하고 액세스 할 수있는 여러 유사한 서비스를 만들고 싶습니다. 나는이 같은 c'tor 종속성이 클래스를 사용하려면 서비스 구현을 위해 c'tor 종속성을 사용하여 서비스의 여러 구성 요소를 만드는 방법
: 내가 뭘하려public interface IXYService
{
string Tag { get; set; }
}
public class _1stXYService : IXYService
{
public _1stXYService(string Tag)
{
this.Tag = Tag;
}
public string Tag { get; set; }
}
는 주어진 키를 통해 액세스 만든 콘크리트 인스턴스를 가지고 'AddComponentWithProperties'를 사용하는 것이 었습니다 :
...
IDictionary l_xyServiceInitParameters = new Hashtable { { "Tag", "1" } };
l_container.AddComponentWithProperties
(
"1st XY service",
typeof(IXYService),
typeof(_1stXYService),
l_xyServiceInitParameters
);
l_xyServiceInitParameters["Tag"] = "2";
l_container.AddComponentWithProperties
(
"2nd XY service",
typeof(IXYService),
typeof(_1stXYService),
l_xyServiceInitParameters
);
...
var service = l_container[serviceName] as IXYService;
그러나 종속성은 해결되지 않았으므로 서비스를 사용할 수 없습니다.
IWindsorContainer.Resolve (...)를 사용하여 매개 변수를 채우는 것은 바람직하지 않습니다.
XML로 작성하지만 모든 경우에 충분하지는 않습니다.
어떻게하면 내 목표를 달성 할 수 있습니까?
그래서 당신은 그것의 태그 속성에 의해 서비스를 해결하려면를? –
모든 윈저 구성 요소에는 문자열 인 ID가 있습니다. 충분하니? 아니면 자신의 태그 속성이 있어야합니까? –
ID는 'AddComponentWithProperties'를 사용하는 경우 'key'매개 변수로 완전히 적합합니다. 이 예에서는 "1st XY 서비스"및 "2nd XY 서비스"키가 있습니다. – apollo