我正在编写一个事件源应用程序。我有IEventStore
由EventStore
类实现。但是,在调试时,我希望将IEventStore
实现为DebuggingEventStore
类。
我可以在DebuggingEventStore
的构造函数中以某种方式注入我的EventStore
(旧实现)吗?我看过装饰器,但我不确定在这种情况下它是否是正确的方法。
IEventStore
已实施为EventStore
。
IEventStore
实现为DebuggingEventStore
。
DebuggingEventStore
通过其构造函数注入旧IEventStore
(EventStore
)。
答案 0 :(得分:2)
您可以实现DebuggingEventStore以在其构造函数中接收EventStore,该构造函数在构建iOS容器时被注入。
实际上,DebuggingEventStore将实现IEventStore并将EventStore作为构造函数参数。
PYTHONPATH=/path/to/app python ....
答案 1 :(得分:0)
如Nicholas Blumhardt所述here,在Autofac中注册(非通用)装饰器的典型方法如下:
builder.RegisterType<EventStore>()
.Named<IEventStore>("implementor");
builder.RegisterDecorator<IEventStore>(
(c, decoratee) => new DebuggingEventStore(decoratee),
fromKey: "implementor");
但是说,我认为@ KnightFox的答案在注册非通用装饰器方面更加清晰:
builder.RegisterType<EventStore>().AsSelf();
builder.Register(c => new DebugingEventStore(c.Resolve<EventStore>()))
.As<IEventStore>();