FromAssemblyDescriptor
Selects a set of types from an assembly.
            
                using Castle.Core.Internal;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
namespace Castle.MicroKernel.Registration
{
    public class FromAssemblyDescriptor : FromDescriptor
    {
        protected readonly IEnumerable<Assembly> assemblies;
        protected bool nonPublicTypes;
        protected internal FromAssemblyDescriptor(Assembly assembly, Predicate<Type> additionalFilters)
            : base(additionalFilters)
        {
            assemblies = new Assembly[1] {
                assembly
            };
        }
        protected internal FromAssemblyDescriptor(IEnumerable<Assembly> assemblies, Predicate<Type> additionalFilters)
            : base(additionalFilters)
        {
            this.assemblies = assemblies;
        }
        public FromAssemblyDescriptor IncludeNonPublicTypes()
        {
            nonPublicTypes = true;
            return this;
        }
        protected override IEnumerable<Type> SelectedTypes(IKernel kernel)
        {
            return assemblies.SelectMany((Assembly a) => a.GetAvailableTypesOrdered(nonPublicTypes));
        }
    }
}