protected override ICollection<Type> LoadTypes()
{
_typesAreLoaded = true;
IEnumerable<Assembly> assemblies;
if (_assemblies.Count > 0)
assemblies = _assemblies;
else
assemblies = AppDomain.CurrentDomain.GetAssemblies();
return assemblies.SelectMany(delegate(Assembly x)
{
try { return x.GetTypes(); }
catch (ReflectionTypeLoadException rex) { return rex.Types.Where(y => y != null).ToArray(); } // http://haacked.com/archive/2012/07/23/get-all-types-in-an-assembly.aspx
catch { return new Type[] { }; }
})
.Where(x => !x.IsGenericType && x.ImplementsOpenGenericInterface(typeof(IPresenter<>)))
.ToList();
}