view Implab.ServiceHost/Unity/RegistrationBuilder.cs @ 279:8714471e8d78 v3

Container configuration cleanup, RC2
author cin
date Fri, 04 May 2018 18:12:42 +0300
parents 963b17c275be
children f07be402ab02
line wrap: on
line source

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Xml.Serialization;
using Implab.Xml;
using Unity.Injection;
using Unity.Lifetime;
using Unity.Registration;

namespace Implab.ServiceHost.Unity {
    /// <summary>
    /// Базовый класс для формирования записей в контейнере, созволяет указать время жизни для записи
    /// </summary>
    public abstract class RegistrationBuilder {
        public Type RegistrationType {
            get;
            private set;
        }

        internal LifetimeManager Lifetime { get; set; }

        protected RegistrationBuilder(Type registrationType) {
            RegistrationType = registrationType;
        }

        internal void Visit(SingletonLifetimeElement simgletonLifetime) {
            Lifetime = new SingletonLifetimeManager();
        }

        internal void Visit(ContainerLifetimeElement containerLifetime) {
            Lifetime = new ContainerControlledLifetimeManager();
        }

        internal void Visit(HierarchicalLifetimeElement hierarchicalLifetime) {
            Lifetime = new HierarchicalLifetimeManager();
        }

        internal void Visist(ContextLifetimeElement contextLifetime) {
            Lifetime = new PerResolveLifetimeManager();
        }
    }
}