Я думаю, что следующее должно достичь того, что вы хотите
Определите UnityContainerExtension
примерно так:
public class InterceptionExtension : UnityContainerExtension
{
protected override void Initialize()
{
Context.Registering += OnRegister;
Context.RegisteringInstance += OnRegisterInstance;
}
public override void Remove()
{
Context.Registering -= OnRegister;
Context.RegisteringInstance -= OnRegisterInstance;
}
private void OnRegister(object sender, RegisterEventArgs e)
{
Container.Configure<Interception>()
.SetInterceptorFor(e.TypeTo, new VirtualMethodInterceptor());
}
private void OnRegisterInstance(object sender, RegisterInstanceEventArgs e)
{
Container.Configure<Interception>()
.SetInterceptorFor(e.RegisteredType, new VirtualMethodInterceptor());
}
}
Добавьте это в контейнер:
_container.AddNewExtension<InterceptionExtension>();
Затем для каждого зарегистрированного типа следует настроить Interception
для применения к виртуальным членам. Это должно затем поднять на любой прикладной [HandlerAttribute]
с.