假設我有獲取數據的接口,以及它的實現:如何在Castle Windsor中使用嵌套的接口實現?
interface IResourceProvider
{
string Get(Uri uri);
}
class HttpResourceProvider : IResourceProvider
{
public string Get(Uri uri)
{
// Download via HTTP.
}
}
我可以在這個溫莎城堡如下注冊:
container.Register
(Component.For<IResourceProvider>().ImplementedBy<HttpResourceProvider>()
);
(這是所有罰款)。
如果我再決定我需要一個緩存實現如下:
class CachingResourceProvider : IResourceProvider
{
public CachingResourceProvider(IResourceProvider resourceProvider)
{
_resourceProvider = resourceProvider;
}
public string Get(Uri uri)
{
// Return from cache if it exists.
// Otherwise use _resourceProvider and add to cache.
}
private readonly IResourceProvider _resourceProvider;
}
我怎麼會註冊這些嵌套的相關性?即,我想說IResourceProvider
由CachingResourceProvider
實現,除非在構造函數中,其中它是HttpResourceProvider
。
根本不含糊...... –