是否有一种使用Unity的事件的好方法?

programAction = UnityContainer.Resolve(); (programAction as LoaderDriver).LoadComplete += new EventHandler(Program_LoadComplete); 

是否有一个配置让我解决我已连接到事件的对象?

或者,是否有一种获得相同结果的首选方法? 我注意到有时当我没有看到“特征”时,因为我不知道的模式是首选。

是的,有办法。 您必须编写一个扩展,将自定义BuilderStrategy添加到Unity BuildPipeline的PostInitialization阶段。

扩展和策略的代码应该类似于:

 public class SubscriptionExtension : UnityContainerExtension { protected override void Initialize() { var strategy = new SubscriptionStrategy(); Context.Strategies.Add(strategy, UnityBuildStage.PostInitialization); } } public class SubscriptionStrategy : BuilderStrategy { public override void PostBuildUp(IBuilderContext context) { if (context.Existing != null) { LoaderDriver ld = context.Existing as LoaderDriver; if(ld != null) { ld.LoadComplete += Program_LoadComplete; } } } } 

然后将扩展添加到容器中

 container.AddNewExtension(); 

当您解决LoaderDriver实例时,它将自动订阅EventHandler。

您可以找到一个工作示例,该类将类订阅到TecX项目中的EventAggregator 。 源代码位于TecX.Event.Unity项目中。

我写了一个你可能觉得有用的Unity Event Broker。 看这篇文章 。