Ejemplo n.º 1
0
        public IEnumerable <T> ResolveAll <T>(RegisterType type)
        {
            if (!LoaderCacheBase.ContainsType(typeof(T), type))
            {
                return(null);
            }
            switch (type)
            {
            case RegisterType.LazySingleton:
                return(LazySingletonLoaderCache <T> .Instanse.Select(e => e.Value).ToArray());

            case RegisterType.PerCall:
                return(PerCallLoaderCache <T> .Instanse.Select(e => e()).ToArray());

            case RegisterType.PerHttpRequest:
                return(PerHttpRequestLoaderCache <T> .GetValues());

            case RegisterType.PerThread:
                return(PerThreadLoaderCache <T> .Instanse.Select(e => e.Value).ToArray());

            case RegisterType.Singleton:
            default:
                return(SingletonLoaderCache <T> .Instanse.ToArray());
            }
        }
Ejemplo n.º 2
0
        public T Resolve <T>(RegisterType type)
        {
            if (!LoaderCacheBase.ContainsType(typeof(T), type))
            {
                return(default(T));
            }
            switch (type)
            {
            case RegisterType.LazySingleton:
                return(LazySingletonLoaderCache <T> .Instanse.First().Value);

            case RegisterType.PerCall:
                return(PerCallLoaderCache <T> .Instanse.First()());

            case RegisterType.PerHttpRequest:
                return(PerHttpRequestLoaderCache <T> .GetValues().First());

            case RegisterType.PerThread:
                return(PerThreadLoaderCache <T> .Instanse.First().Value);

            case RegisterType.Singleton:
            default:
                return(SingletonLoaderCache <T> .Instanse.First());
            }
        }
Ejemplo n.º 3
0
        public void Register <T>(Func <T> creator, RegisterType type = RegisterType.Singleton)
        {
            switch (type)
            {
            case RegisterType.LazySingleton:
                LazySingletonLoaderCache <T> .AddRegister(creator);

                break;

            case RegisterType.PerCall:
                PerCallLoaderCache <T> .AddRegister(creator);

                break;

            case RegisterType.PerHttpRequest:
                PerHttpRequestLoaderCache <T> .AddRegister(creator);

                break;

            case RegisterType.PerThread:
                PerThreadLoaderCache <T> .AddRegister(creator);

                break;

            case RegisterType.Singleton:
            default:
                SingletonLoaderCache <T> .AddRegister(creator());

                break;
            }
        }
Ejemplo n.º 4
0
        public void Register <TSerivce, TImplementation>(RegisterType type = RegisterType.Singleton)
            where TImplementation : TSerivce
        {
            switch (type)
            {
            case RegisterType.LazySingleton:
                LazySingletonLoaderCache <TSerivce> .AddRegister(() => CreateCreatorFactory <TImplementation>()());

                break;

            case RegisterType.PerCall:
                PerCallLoaderCache <TSerivce> .AddRegister(() => CreateCreatorFactory <TImplementation>()());

                break;

            case RegisterType.PerHttpRequest:
                PerHttpRequestLoaderCache <TSerivce> .AddRegister(() => CreateCreatorFactory <TImplementation>()());

                break;

            case RegisterType.PerThread:
                PerThreadLoaderCache <TSerivce> .AddRegister(() => CreateCreatorFactory <TImplementation>()());

                break;

            case RegisterType.Singleton:
            default:
                SingletonLoaderCache <TSerivce> .AddRegister(CreateCreatorFactory <TImplementation>()());

                break;
            }
        }
Ejemplo n.º 5
0
        public void Register <T>(RegisterType type = RegisterType.Singleton)
        {
            switch (type)
            {
            case RegisterType.LazySingleton:
                LazySingletonLoaderCache <T> .AddRegister(CreateCreatorFactory <T>());

                break;

            case RegisterType.PerCall:
                PerCallLoaderCache <T> .AddRegister(CreateCreatorFactory <T>());

                break;

            case RegisterType.PerHttpRequest:
                PerHttpRequestLoaderCache <T> .AddRegister(CreateCreatorFactory <T>());

                break;

            case RegisterType.PerThread:
                PerThreadLoaderCache <T> .AddRegister(CreateCreatorFactory <T>());

                break;

            case RegisterType.Singleton:
            default:
                SingletonLoaderCache <T> .AddRegister(CreateCreatorFactory <T>()());

                break;
            }
        }