示例#1
0
        public static ILifetimeStrategy Get(Lifetime lifetime, INCopDependencyResolver container)
        {
            switch (lifetime) {
                case Lifetime.None:
                    return defaultLifetimeStrategy;

                case Lifetime.PerThread :
                    return PerThreadLifetimeStrategy.Instance;

                case Lifetime.HttpRequest:
                    return HttpRequestLifetimeStrategy.Instance;

                case Lifetime.Hierarchy:
                    return new HierarchySingletonLifetimeStrategy();

                case Lifetime.Container:
                    return new ContainerSingletonLifetimeStrategy(container);

                case Lifetime.HybridRequest:
                    return hybridRequestLifetimeStrategy;

                default:
                    throw new ResolutionException(Resources.UnknownLifetime);
            }
        }
示例#2
0
        public static ILifetimeStrategy Get(Lifetime lifetime, INCopDependencyResolver container)
        {
            switch (lifetime)
            {
            case Lifetime.None:
                return(defaultLifetimeStrategy);

            case Lifetime.PerThread:
                return(PerThreadLifetimeStrategy.Instance);

            case Lifetime.HttpRequest:
                return(HttpRequestLifetimeStrategy.Instance);

            case Lifetime.Hierarchy:
                return(new HierarchySingletonLifetimeStrategy());

            case Lifetime.Container:
                return(new ContainerSingletonLifetimeStrategy(container));

            case Lifetime.HybridRequest:
                return(hybridRequestLifetimeStrategy);

            default:
                throw new ResolutionException(Resources.UnknownLifetime);
            }
        }
示例#3
0
 internal ServiceEntry CloneFor(INCopDependencyResolver container)
 {
     return(new ServiceEntry {
         Scope = Scope,
         Owner = this.Owner,
         Container = container,
         Factory = this.Factory,
         LifetimeStrategy = Scope.ToStrategy(container)
     });
 }
示例#4
0
        public static ILifetimeStrategy Get(ReuseScope scope, INCopDependencyResolver container)
        {
            switch (scope)
            {
            case ReuseScope.None:
                return(defaultLifetimeStrategy);

            case ReuseScope.Hierarchy:
                return(new HierarchySingletonStrategy());

            case ReuseScope.Container:
                return(new ContainerSingletonStrategy(container));

            default:
                throw new ResolutionException(Resources.UnknownReuseScope);
            }
        }
示例#5
0
 public ContainerSingletonLifetimeStrategy(INCopDependencyResolver container)
 {
     this.container = container;
 }
示例#6
0
 public static ILifetimeStrategy ToStrategy(this Lifetime lifetime, INCopDependencyResolver container)
 {
     return LifetimeStrategyFactory.Get(lifetime, container);
 }
示例#7
0
 internal static ILifetimeStrategy ToStrategy(this ReuseScope scope, INCopDependencyResolver container)
 {
     return(LifetimeStrategyFactory.Get(scope, container));
 }
示例#8
0
 public static ILifetimeStrategy ToStrategy(this Lifetime lifetime, INCopDependencyResolver container)
 {
     return(LifetimeStrategyFactory.Get(lifetime, container));
 }
示例#9
0
        private TService CloneAndResolve <TService>(ServiceKey key, ServiceEntry entry, INCopDependencyResolver container, Action <ServiceKey, ServiceEntry> registry, Func <TService> factory)
        {
            ServiceEntry clonedEntry = entry.CloneFor(container);

            registry(key, clonedEntry);

            var context = new ResolveContext <TService> {
                Key       = key,
                Factory   = factory,
                Entry     = clonedEntry,
                Registry  = registry,
                Container = container
            };

            return((TService)clonedEntry.LifetimeStrategy.Resolve <TService>(context));
        }