FromAssemblyDescriptor
Selects a set of types from an assembly.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
namespace Castle.MicroKernel.Registration
{
public class FromAssemblyDescriptor : FromDescriptor
{
private readonly IEnumerable<Assembly> assemblies;
private bool nonPublicTypes;
internal FromAssemblyDescriptor(Assembly assembly, Predicate<Type> additionalFilters)
: base(additionalFilters)
{
assemblies = new Assembly[1] {
assembly
};
}
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)
{
if (nonPublicTypes)
return assemblies.SelectMany((Assembly assembly) => assembly.GetTypes());
return assemblies.SelectMany((Assembly assembly) => assembly.GetExportedTypes());
}
}
}