데이터를 가져 오는 인터페이스와 그 구현을 가정 해 보겠습니다.Castle Windsor에서 인터페이스의 중첩 구현을 사용하려면 어떻게해야합니까?
interface IResourceProvider
{
string Get(Uri uri);
}
class HttpResourceProvider : IResourceProvider
{
public string Get(Uri uri)
{
// Download via HTTP.
}
}
다음과 같이 Castle Windsor에 등록 할 수 있습니다.
container.Register
(Component.For<IResourceProvider>().ImplementedBy<HttpResourceProvider>()
);
(모두 괜찮습니다).
다음과 같이 캐싱 구현을 원한다면 xxx59
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
이있는 곳을 제외하고 말입니다.
전혀 모호하지 않습니다 ... –