Итак, допустим, у меня есть интерфейс IThingFactory
:
public interface IThingFactory
{
Thing GetThing(int thingId);
}
Теперь, скажем, у меня есть конкретная реализация, которая извлекает Thing
s из базы данных.Теперь, давайте также скажем, что у меня есть конкретная реализация, которая упаковывает существующий IThingFactory
и проверяет наличие Thing
, скажем, в кеше в памяти, прежде чем нажать на обернутый IThingFactory
.Что-то вроде:
public class CachedThingFactory : IThingFactory
{
private IThingFactory _wrapped;
private Dictionary<int, Thing> _cachedThings;
public CachedThingFactory(IThingFactory wrapped)
{
this._wrapped = wrapped;
_cachedThings = new Dictionary<int,Thing>();
}
public Thing GetThing(int thingId)
{
Thing x;
if(_cachedThings.TryGetValue(thingId, out x))
return x;
x = _wrapped.GetThing(thingId);
_cachedThings[thingId] = x;
return x;
}
}
Как бы я справился с таким сценарием, используя инъекцию зависимостей с чем-то вроде, скажем, Ninject, чтобы я мог настроить контейнер DI так, чтобы я мог внедрять или удалять прокси-сервер кэшированиякак это, или, скажем, что-то, что делает журналирование, или (вставьте сюда)?