static IEnumerable <Type> GetTypesScopedByTestClass(ITransportIntegration transportToUse, EndpointConfiguration endpointConfiguration) { var assemblies = new AssemblyScanner().GetScannableAssemblies(); var types = assemblies.Assemblies //exclude all test types by default .Where(a => a != Assembly.GetExecutingAssembly()) .Where(a => { if (a == transportToUse.Type.Assembly) { return(true); } return(!a.GetName().Name.Contains("Transports")); }) .Where(a => !a.GetName().Name.StartsWith("ServiceControl.Plugin")) .Where(a => a.GetName().Name != "ServiceControl") .SelectMany(a => a.GetTypes()); types = types.Union(GetNestedTypeRecursive(transportToUse.GetType(), null)); var extraConfigForEndpoint = Type.GetType($"{transportToUse.GetType().Namespace}.{transportToUse.Name}.CustomConfigForEndpoints", false); if (extraConfigForEndpoint != null) { types = types.Union(new [] { extraConfigForEndpoint }); } types = types.Union(GetNestedTypeRecursive(endpointConfiguration.BuilderType.DeclaringType, endpointConfiguration.BuilderType)); types = types.Union(endpointConfiguration.TypesToInclude); var typesScopedByTestClass = types.ToList(); return(typesScopedByTestClass); }
private static IEnumerable <Type> GetTypesScopedByTestClass(ITransportIntegration transportToUse) { var assemblies = new AssemblyScanner().GetScannableAssemblies(); var types = assemblies.Assemblies //exclude all test types by default .Where(a => a != Assembly.GetExecutingAssembly()) .Where(a => { if (a == transportToUse.Type.Assembly) { return(true); } return(!a.GetName().Name.Contains("Transports")); }) .Where(a => !a.GetName().Name.StartsWith("ServiceControl.Plugin")) .SelectMany(a => a.GetTypes()); types = types.Union(GetNestedTypeRecursive(transportToUse.GetType())); return(types); }