오늘 (Unity를 사용하여) 종속성 삽입을 사용하는 동안 사소한 문제가 발생했습니다. 저장소와 그 저장소에서 지원하는 캐시가 모두 있습니다. 내 소비자 기대했다동일한 인터페이스를 구현하는 캐시와 저장소가있는 DependencyInjection
public interface IStuffRepo {
Stuff GetStuff();
}
public class Repo : IStuffRepo {
public Stuff GetStuff() {
return get_stuff_from_the_database(); // or something
}
}
public class StuffCache : IStuffRepo {
private Stuff _cached;
private IStuffRepo _actualRepo;
public StuffCache([Dependency] IStuffRepo actualRepo) { _actualRepo = actualRepo; }
public Stuff GetStuff() {
if (_cached != null) return cached_stuff;
_cached = _actualRepo.GetStuff(); return _cached;
}
}
것은 다음 단지 IStuffRepo를 주입, 내 DI 프레임 워크 및 구성 루트를 구축 처리 할 수 있습니다 :
여기 아주 기본 설명입니다. 소비자에게 캐시와 저장소가 동일하도록이 패턴을 선택했습니다.
이제 모든 것을 구성하기 위해 구성 루트를 설정하는 방법을 알아 내려고합니다.
var cache = new StuffCache(container.Resolve<StuffRepository>());
container.RegisterInstance<IStuffRepository>(cache);
하지만 일반적으로 새로운 보내고 것을 피하려고 건설 및 수명 관리를 할 내 DI 프레임 워크를 사용하는 것을 선호 :이 작업을 수행하는 내가 생각할 수있는 유일한 방법이 될 것입니다.
이것을 "받아 들인"방법입니까? 이 일에 동참하는 어떤 것이 Unity에 있습니까?
대단히 감사합니다. 사용하겠습니다. :) – csauve