在 Caliburn.Micro 文档中,作者提到了这种可能性: documentation link Autofac如何做到这一点?我试图利用装饰器的功能,但是对于这种情况当然是不合适的。而且,默认情况下,我的IHandle 的实现者不会在容器内注册为IHandle的实例。 P.S. 提供此不当的实现,以防万一它可能有用,尽管我对此表示怀疑。builder.RegisterInstance<IEventAggregator>(new EventAggregator());builder.RegisterDecorator<IHandle>((container, handler) =>{ var eventAggregator = container.Resolve<IEventAggregator>(); eventAggregator.Subscribe(handler); return handler;}, "unsubscribed", "subscribed"); 最佳答案 对Caliburn的工作方式进行一些假设,我认为您正在寻找的是:builder.RegisterType<MyViewModel>();builder.RegisterModule<AutoSubscribeHandlersModule>();在实现模块的地方,如下所示:class AutoSubscribeHandersModule : Module{ protected override AttachToComponentRegistration( IComponentRegistry registry, IComponentRegistration registration) { if (typeof(IHandle).IsAssignableFrom(registration.Activator.LimitType)) { registration.Activated += (sender, e) => { var aggregator = e.Context.Resolve<IEventAggregator>(); aggregator.Subscribe((IHandle)e.Instance); }; } }}关于wpf - Caliburn.Micro。使用Autofac自动为IHandle实现者调用eventaggregator.Subscribe(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6871077/
10-12 03:10