public void AddIgnoredAssembly()
        {
            ApplicationAssemblyLoaderFilter filter = ApplicationAssemblyLoaderFilter.Instance;

            Assert.That(filter.ShouldConsiderAssembly(typeof(ApplicationAssemblyLoaderFilter).Assembly.GetName()), Is.True);
            filter.AddIgnoredAssembly(typeof(ApplicationAssemblyLoaderFilter).Assembly.GetName().Name);
            Assert.That(filter.ShouldConsiderAssembly(typeof(ApplicationAssemblyLoaderFilter).Assembly.GetName()), Is.False);
        }
        protected virtual void InitializeConfiguration(string assemblyDirectory)
        {
            ApplicationAssemblyLoaderFilter filter = ApplicationAssemblyLoaderFilter.Instance;

            // TODO: Duplicates logic from AssemblyFinder? The DLL searching part below can probably be removed.
            List <Assembly> assemblies = new List <Assembly>();
            DirectoryInfo   dir        = new DirectoryInfo(assemblyDirectory);

            foreach (FileInfo file in dir.GetFiles("*.dll"))
            {
                Assembly asm = Assembly.LoadFile(file.FullName);
                if (filter.ShouldConsiderAssembly(asm.GetName()) && filter.ShouldIncludeAssembly(asm))
                {
                    assemblies.Add(asm);
                }
            }
            DomainObjectsConfiguration.SetCurrent(
                new FakeDomainObjectsConfiguration(DomainObjectsConfiguration.Current.MappingLoader, GetPersistenceConfiguration(), new QueryConfiguration()));

            var rootAssemblyFinder = new FixedRootAssemblyFinder(assemblies.Select(a => new RootAssembly(a, false)).ToArray());

            var assemblyLoader = new FilteringAssemblyLoader(filter);
            ITypeDiscoveryService typeDiscoveryService =
                new AssemblyFinderTypeDiscoveryService(new AssemblyFinder(rootAssemblyFinder, assemblyLoader));

            var mappingReflector       = new MappingReflector(typeDiscoveryService);
            var persistenceModelLoader =
                new PersistenceModelLoader(new StorageProviderDefinitionFinder(DomainObjectsConfiguration.Current.Storage));
            var mappingConfiguration = new MappingConfiguration(mappingReflector, persistenceModelLoader);

            MappingConfiguration.SetCurrent(mappingConfiguration);
        }
        public void ApplicationAssemblyConsidering()
        {
            ApplicationAssemblyLoaderFilter filter = ApplicationAssemblyLoaderFilter.Instance;

            Assert.That(filter.ShouldConsiderAssembly(typeof(AttributeAssemblyLoaderFilterTest).Assembly.GetName()), Is.True);
            Assert.That(filter.ShouldConsiderAssembly(typeof(TestFixtureAttribute).Assembly.GetName()), Is.True);
            Assert.That(filter.ShouldConsiderAssembly(typeof(ApplicationAssemblyLoaderFilter).Assembly.GetName()), Is.True);

            Assert.That(filter.ShouldConsiderAssembly(typeof(object).Assembly.GetName()), Is.False);
            Assert.That(filter.ShouldConsiderAssembly(new AssemblyName("System")), Is.False);
            Assert.That(filter.ShouldConsiderAssembly(new AssemblyName("Microsoft.Something.Whatever")), Is.False);
            Assert.That(filter.ShouldConsiderAssembly(new AssemblyName("Remotion.Mixins.Generated.Unsigned")), Is.False);
            Assert.That(filter.ShouldConsiderAssembly(new AssemblyName("Remotion.Mixins.Generated.Signed")), Is.False);
            Assert.That(filter.ShouldConsiderAssembly(new AssemblyName("Remotion.Data.DomainObjects.Generated.Signed")), Is.False);
            Assert.That(filter.ShouldConsiderAssembly(new AssemblyName("Remotion.Data.DomainObjects.Generated.Unsigned")), Is.False);
        }