コード例 #1
0
        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);
            }
        }
コード例 #2
0
		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);
			}
		}