Exemplo n.º 1
0
        public static IList <T> Initialize <T>(this IDIContext context, FilteredInitializerAttribute filter = null) where T : class, IContextInitializer
        {
            if (!typeof(T).IsInterface)
            {
                return(new List <T> {
                    InitSingle <T>(context)
                });
            }

            if (typeof(T) == typeof(ICustomContextInitializer))
            {
                throw new MindiException(string.Format(
                                             "{0} can only be used for single-class context initializers !",
                                             typeof(ICustomContextInitializer)
                                             ));
            }

            if (initializers == null)
            {
                FetchInitializers();
            }

            IList <T> result = new List <T>();

            List <IContextInitializer> instances;

            if (!initializers.TryGetValue(typeof(T), out instances))
            {
                return(result);
            }

            foreach (var instance in instances)
            {
                if (filter != null && IsInstanceFiltered(instance, filter))
                {
                    continue;
                }

                instance.Initialize(context);
                result.Add((T)instance);
            }
            return(result);
        }
Exemplo n.º 2
0
        private static bool IsInstanceFiltered(IContextInitializer instance, FilteredInitializerAttribute filter)
        {
            var attributes = instance.GetType().GetCustomAttributes(filter.GetType(), true);

            return(attributes.Cast <FilteredInitializerAttribute>().All(atr => atr.name != filter.name));
        }