private void AddInstaller(IConfiguration installer, Dictionary <Type, IWindsorInstaller> cache, IConversionManager conversionManager, ICollection <Assembly> assemblies) { var typeName = installer.Attributes["type"]; if (string.IsNullOrEmpty(typeName) == false) { var type = conversionManager.PerformConversion <Type>(typeName); AddInstaller(cache, type); return; } assemblyName = installer.Attributes["assembly"]; if (string.IsNullOrEmpty(assemblyName) == false) { var assembly = ReflectionUtil.GetAssemblyNamed(assemblyName); if (assemblies.Contains(assembly)) { return; } assemblies.Add(assembly); GetAssemblyInstallers(cache, assembly); return; } var directory = installer.Attributes["directory"]; var mask = installer.Attributes["fileMask"]; var token = installer.Attributes["publicKeyToken"]; Debug.Assert(directory != null, "directory != null"); var assemblyFilter = new AssemblyFilter(directory, mask); if (token != null) { assemblyFilter.WithKeyToken(token); } foreach (var assembly in ReflectionUtil.GetAssemblies(assemblyFilter)) { if (assemblies.Contains(assembly)) { continue; } assemblies.Add(assembly); GetAssemblyInstallers(cache, assembly); } }
private void AddInstaller(IConfiguration installer, Dictionary<Type, IWindsorInstaller> cache, IConversionManager conversionManager, ICollection<Assembly> assemblies) { var typeName = installer.Attributes["type"]; if (string.IsNullOrEmpty(typeName) == false) { var type = conversionManager.PerformConversion<Type>(typeName); AddInstaller(cache, type); return; } assemblyName = installer.Attributes["assembly"]; if (string.IsNullOrEmpty(assemblyName) == false) { var assembly = ReflectionUtil.GetAssemblyNamed(assemblyName); if (assemblies.Contains(assembly)) { return; } assemblies.Add(assembly); GetAssemblyInstallers(cache, assembly); return; } var directory = installer.Attributes["directory"]; var mask = installer.Attributes["fileMask"]; var token = installer.Attributes["publicKeyToken"]; Debug.Assert(directory != null, "directory != null"); var assemblyFilter = new AssemblyFilter(directory, mask); if (token != null) { assemblyFilter.WithKeyToken(token); } foreach (var assembly in ReflectionUtil.GetAssemblies(assemblyFilter)) { if (assemblies.Contains(assembly)) { continue; } assemblies.Add(assembly); GetAssemblyInstallers(cache, assembly); } }