예제 #1
0
        private void LoadAssemblies()
        {
            var assemblies = new List <_Assembly>();

            // Load composer assemblies
            var loadedAssemblies = _assemblyHelper.SafeLoadAssemblies(ComposerDllRegex);

            assemblies.AddRange(loadedAssemblies);

            // Load other assemblies next to executing assembly
            if (AutoCrawlEnabled)
            {
                assemblies.AddRange(_assemblyHelper.SafeLoadAssemblies());
            }

            // Load specific assemblies
            if (AssembliesToInclude.Any())
            {
                assemblies.AddRange(AssembliesToInclude);
            }

            // Add assemblies to dictionary
            foreach (var assembly in assemblies)
            {
                _appDomainAssemblies[assembly.FullName] = assembly;
            }

            LoadExtensionsFromAssemblies();
        }
예제 #2
0
        protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
        {
            var  jsonProperty  = base.CreateProperty(member, memberSerialization);
            Type declaringType = member.DeclaringType;

            if (TypesToInclude.Contains(declaringType) || AssembliesToInclude.Contains(declaringType.Assembly))
            {
                jsonProperty.PropertyName = ToCamelCase(jsonProperty.PropertyName);
            }

            return(jsonProperty);
        }
예제 #3
0
        protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
        {
            //AssembliesToInclude = new HashSet<Assembly>(AppDomain.CurrentDomain.GetAssemblies().Where(a => a.FullName.StartsWith("Svetophor")));

            var  jsonProperty  = base.CreateProperty(member, memberSerialization);
            Type declaringType = member.DeclaringType;

            if (
                TypesToInclude.Contains(declaringType) ||
                AssembliesToInclude.Contains(declaringType.Assembly))
            {
                jsonProperty.PropertyName = jsonProperty.PropertyName.ToCamelCase();
            }
            return(jsonProperty);
        }
예제 #4
0
        private ComposerHost(bool autoCrawlEnabled, params _Assembly[] assembliesToInclude)
        {
            AutoCrawlEnabled    = autoCrawlEnabled;
            AssembliesToInclude = assembliesToInclude ?? new _Assembly[0];

            if (!AutoCrawlEnabled && !AssembliesToInclude.Any())
            {
                throw new ArgumentException("The constructor you used does not support Auto crawling of assemblies and you didn't define any assemblies to include.");
            }

            _dependencyContainer        = new AutofacDependencyContainer();
            _aspNetConfigurationManager = new AspNetConfigurationManager();
            _assemblyHelper             = new AssemblyHelper();
            _appDomainAssemblies        = new Dictionary <string, _Assembly>();
            _environment = new ComposerEnvironment();
        }
예제 #5
0
        /// <summary>
        ///  Determines whether the specified assembly name or file name can be included, given the set up include/exclude
        ///  patterns and default include/exclude patterns
        /// </summary>
        bool IsIncluded(string assemblyNameOrFileName)
        {
            var isExplicitlyExcluded = AssembliesToSkip.Any(excluded => IsMatch(excluded, assemblyNameOrFileName));

            if (isExplicitlyExcluded)
            {
                return(false);
            }

            var isExcludedByDefault = DefaultAssemblyExclusions.Any(exclusion => IsMatch(exclusion, assemblyNameOrFileName));

            if (isExcludedByDefault)
            {
                return(false);
            }

            var noAssembliesWereExplicitlyIncluded = !AssembliesToInclude.Any();
            var isExplicitlyIncluded = AssembliesToInclude.Any(included => IsMatch(included, assemblyNameOrFileName));

            return(noAssembliesWereExplicitlyIncluded || isExplicitlyIncluded);
        }