我想創建幾個類似的服務,它們的名稱(=鍵)可以被destinguished和訪問。如何創建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構建工程,但並非所有情況下都足夠。
我怎麼能達到我的目標?
所以要通過其Tag屬性來解析服務? – 2009-11-05 15:28:11
所有windsor組件都有一個ID,它是一個字符串。這足夠嗎?還是它必須是您自己的標籤屬性? – 2009-11-05 15:32:21
該ID在使用'AddComponentWithProperties'的情況下是'key'參數,完全適合。在這個例子中,這些是「第一個XY服務」和「第二個XY服務」的鍵。 – apollo 2009-11-05 17:20:01