Example #1
0
        private static ICompositionRoot GetCompositionRoot(IAssemblyWrapper assembly)
        {
            var compositionRootType = GetImplementationTypeOfCompositionRoot(assembly);

            if (compositionRootType != null)
            {
                return((ICompositionRoot)compositionRootType.GetNewInstance());
            }

            var registerDependenciesAttributes   = assembly.GetAttributes <RegisterDependenciesAttribute>();
            var registerDependenciesByAttributes = assembly.GetAttributes <RegisterDependenciesByAttribute>();

            if (registerDependenciesAttributes.IsEmpty() && registerDependenciesByAttributes.IsEmpty())
            {
                return(null);
            }

            return(new DefaultCompositionRoot(registerDependenciesAttributes, registerDependenciesByAttributes, assembly.Assembly));
        }
Example #2
0
        private static Type GetImplementationTypeOfCompositionRoot(IAssemblyWrapper assembly)
        {
            var compositionRootAttributes = assembly.GetAttributes <CompositionRootAttribute>();

            if (compositionRootAttributes.Any())
            {
                return(compositionRootAttributes.Single().CompositionRootType);
            }

            var compositionRootTypes = SearchCompositionRootTypes(assembly);

            if (compositionRootTypes.HasSeveralElements())
            {
                throw new SeveralCompositionRootsWasFoundException(assembly, compositionRootTypes);
            }
            return(compositionRootTypes.SingleOrDefault());
        }