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)
{
assemblies = new Assembly[1] {
assembly
};
}
internal FromAssemblyDescriptor(IEnumerable<Assembly> assemblies)
{
this.assemblies = assemblies;
}
public FromAssemblyDescriptor IncludeNonPublicTypes()
{
nonPublicTypes = true;
return this;
}
protected override IEnumerable<Type> SelectedTypes(IKernel kernel)
{
if (nonPublicTypes) {
foreach (Type item in assemblies.SelectMany((Assembly assembly) => assembly.GetTypes())) {
yield return item;
}
}
foreach (Type item2 in assemblies.SelectMany((Assembly assembly) => assembly.GetExportedTypes())) {
yield return item2;
}
}
}
}