Да, есть способ.Вам нужно написать расширение, которое добавляет пользовательскую BuilderStrategy к этапу PostInitialization в Unity BuildPipeline.
Код расширения и стратегии должен выглядеть примерно так:
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<SubscriptionExtension>();
И когда вы разрешите свой экземпляр LoaderDriver, он автоматически подпишется на EventHandler.
Рабочий образец, который подписывает классы на EventAggregator, можно найти в TecX проект.Исходный код находится в проекте TecX.Event.Unity .