use an aspect that inherits from OnMethodBoundaryAspect, and in OnMethodEntry / OnMethodExit just make a call from your aspect to Unity to enable your registrar, and then register.
Apply aspect anyway (class, method, or even assembly level)
[Serializable] [MulticastAttributeUsage(MulticastTargets.Method, Inheritance=MulticastInheritance.Strict)] public class LogAspect : OnMethodBoundaryAspect { public override void OnEntry(MethodExecutionArgs args) { var Logger = Unity.Resolve<T>(); Logger.Write(args.Method.Name + " enter"); } public override void OnExit(MethodExecutionArgs args) { var Logger = Unity.Resolve<T>(); Logger.Write(args.Method.Name + " exit"); } }
To get the union container, I would use a service locator pattern.
public class iocServiceLocator { private static readonly IUnityContainer _container; static iocServiceLocator() { _container = new UnityContainer(); } public static void Initialize() { InitializeBootStrap(); } private static void InitializeBootStrap() {
source share