//REGISTER //Register interface to class public void Register <T, TT>(IoCLifeTimeType ltt) where TT : class, T { var ltm = getLifeTimeManager(ltt); if (!Container.IsRegistered <T>()) { Container.RegisterType <T, TT>(ltm).Configure <Interception>().SetInterceptorFor <T>(new InterfaceInterceptor()); } //else throw new Exception("Already registered."); }
//Register class public void Register <T>(IoCLifeTimeType ltt = IoCLifeTimeType.PerRequest) where T : class { var ltm = getLifeTimeManager(ltt); if (!Container.IsRegistered <T>()) { //TODO : Interception fails Container.RegisterType <T, T>(ltm); //.Configure<Interception>() //.SetInterceptorFor<T>(new TransparentProxyInterceptor()); } //else throw new Exception("bu tip zaten kayıtlı"); }
//Lifetime manager wrapper for Unity private LifetimeManager getLifeTimeManager(IoCLifeTimeType ltt) { switch (ltt) { case IoCLifeTimeType.Singleton: return(new HierarchicalLifetimeManager()); case IoCLifeTimeType.PerRequest: return(new TransientLifetimeManager()); case IoCLifeTimeType.PerThread: return(new PerThreadLifetimeManager()); case IoCLifeTimeType.ContainerControllled: return(new ContainerControlledLifetimeManager()); default: throw new Exception("lifetime tipi bulunamadı"); } }