Exemple #1
0
        /// <summary>
        /// Find matching interface by name C# interface name convention.  Optionally use a filter.
        /// </summary>
        /// <param name="typeInfo"></param>
        /// <param name="action"></param>
        /// <returns></returns>
        public static IEnumerable <Type> FindMatchingInterface(this TypeInfo typeInfo, Action <TypeInfo, IImplementationTypeFilter> action)
        {
            var matchingInterfaceName = $"I{typeInfo.Name}";

            var matchedInterfaces = GetImplementedInterfacesToMap(typeInfo)
                                    .Where(x => string.Equals(x.Name, matchingInterfaceName, StringComparison.Ordinal))
                                    .ToArray();

            Type type;

            if (action != null)
            {
                var filter = new ImplementationTypeFilter(matchedInterfaces);

                action(typeInfo, filter);

                type = filter.Types.FirstOrDefault();
            }
            else
            {
                type = matchedInterfaces.FirstOrDefault();
            }

            if (type != null)
            {
                yield return(type);
            }
        }
Exemple #2
0
        private IServiceTypeSelector AddFilter(IEnumerable <Type> types, Action <IImplementationTypeFilter> action)
        {
            var filter = new ImplementationTypeFilter(types);

            action(filter);

            return(AddSelector(filter.Types));
        }
        public IServiceTypeSelector AddClasses(Action <IImplementationTypeFilter> action, bool publicOnly)
        {
            Preconditions.NotNull(action, nameof(action));

            var classes = GetNonAbstractClasses(publicOnly);

            var filter = new ImplementationTypeFilter(classes);

            action(filter);

            return(AddSelector(filter.Types));
        }
        public IServiceTypeSelector AddClasses(Action <IImplementationTypeFilter> action, bool publicOnly)
        {
            if (action == null)
            {
                throw new ArgumentNullException(nameof(action));
            }

            var filter = new ImplementationTypeFilter(GetNonAbstractClasses(publicOnly));

            action(filter);

            return(AddSelector(filter.Types));
        }
        public void AddFromAttributes(Action <IImplementationTypeFilter> action, bool publicOnly)
        {
            if (action == null)
            {
                throw new ArgumentNullException(nameof(action));
            }

            var filter = new ImplementationTypeFilter(GetNonAbstractClasses(publicOnly));

            action(filter);

            var selector = new AttributeSelector(filter.Types);

            Selectors.Add(selector);
        }