Więc powiedzmy, że mają interfejsu IThingFactory
:Dependency Injection: Jak skonfigurować powiązań interfejsu do owijania
public interface IThingFactory
{
Thing GetThing(int thingId);
}
Teraz, powiedzmy, że mam konkretną implementację pobierającą Thing
s z bazy danych. Teraz, powiedzmy, że mam konkretną implementację, która owija istniejącą IThingFactory
i sprawdza obecność w, powiedzmy, pamięci podręcznej w pamięci przed uderzeniem w opakowaną IThingFactory
. Coś jak:
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;
}
}
Jak sobie radzić ze scenariusza jak ten przy użyciu iniekcji zależność z czymś takim, powiedzmy, Ninject, tak że mogę skonfigurować kontener DI tak, że można wprowadzić lub usunąć proxy buforowania tak lub, powiedzmy, coś, co robi logowanie, lub (wstaw tutaj)?
Nie wiedział nawet, że istnieje metoda WhenInjectedInto(). Dzięki! – FMM