Vì vậy, chúng ta hãy nói rằng tôi có một giao diện IThingFactory
:Dependency Injection: Làm thế nào để cấu hình các ràng buộc giao diện cho gói
public interface IThingFactory
{
Thing GetThing(int thingId);
}
Bây giờ, chúng ta hãy nói rằng tôi có một thực hiện cụ thể để lấy Thing
s từ một cơ sở dữ liệu. Bây giờ, chúng ta hãy nói rằng tôi có một triển khai cụ thể kết thúc tốt đẹp hiện có IThingFactory
và kiểm tra sự hiện diện của Thing
trong bộ nhớ cache trong bộ nhớ trước khi chạm vào gói IThingFactory
. Một cái gì đó như:
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;
}
}
Làm thế nào tôi có thể đối phó với một tình huống như thế này sử dụng dependency injection với một cái gì đó giống như, nói, Ninject, để tôi có thể cấu hình các container DI vì vậy mà tôi có thể tiêm hoặc loại bỏ một proxy caching như thế này , hoặc, nói, một cái gì đó mà đăng nhập, hoặc (chèn ở đây)?
Thậm chí không biết rằng một phương thức WhenInjectedInto() đã tồn tại. Cảm ơn! – FMM