예제 #1
0
        public static IList <T> ResolveNameTypeServices <T>(this IServiceContainer container)
        {
            if (container == null)
            {
                throw new ArgumentNullException(nameof(container));
            }
            Func <Object, Boolean> predicate =
                key =>
            {
                NameTypeKey nameTypeKey = key as NameTypeKey;
                return(nameTypeKey != null && typeof(T).IsAssignableFrom(nameTypeKey.Type));
            };

            return(container.Resolve <T>(predicate));
        }
        public static Boolean AddGeneratorComponent(this IDictionary <Object, IContainerEntry> entries, String name, Type type, CreateFunc <Object> generator)
        {
            if (entries == null)
            {
                throw new ArgumentNullException(nameof(entries));
            }
            if (String.IsNullOrEmpty(name))
            {
                throw new ArgumentNullException(nameof(name));
            }
            if (type == null)
            {
                throw new ArgumentNullException(nameof(type));
            }
            if (generator == null)
            {
                throw new ArgumentNullException(nameof(generator));
            }
            NameTypeKey key = new NameTypeKey(name, type);

            return(AddComponent(entries, key, new GeneratorContainerEntry <Object>(generator)));
        }
        public static Boolean AddSimpleValueComponent(this IDictionary <Object, IContainerEntry> entries, String name, Type type, Object value)
        {
            if (entries == null)
            {
                throw new ArgumentNullException(nameof(entries));
            }
            if (String.IsNullOrEmpty(name))
            {
                throw new ArgumentNullException(nameof(name));
            }
            if (type == null)
            {
                throw new ArgumentNullException(nameof(type));
            }
            if (value == null)
            {
                throw new ArgumentNullException(nameof(value));
            }
            NameTypeKey key = new NameTypeKey(name, type);

            return(AddComponent(entries, key, new SimpleContainerEntry <Object>(value)));
        }