protected virtual Type[] GetTypesToTest(ConventionData data) { if (data.SourceTypes != null) { return data.SourceTypes; } return GetAssembliesToScan(data) .SelectMany(a => a.SafeGetTypes()) .Where(data.Types.Invoke) .OrderBy(t => t.FullName) .ToArray(); }
protected virtual Assembly[] GetAssembliesToScan(ConventionData data) { if (data.Assemblies != null) { return data.Assemblies; } var assembly = Assembly.GetCallingAssembly(); var companyName = assembly.FullName.Substring(0, assembly.FullName.IndexOf('.')); var assemblyNames = assembly.GetReferencedAssemblies(); var applicationAssemblies = Array.FindAll(assemblyNames, n => n.FullName.StartsWith(companyName)); var assemblies = Array.ConvertAll(applicationAssemblies, n => n.TryLoadAssembly()); return Array.FindAll(assemblies, a => a != null); }