예제 #1
0
        public AssemblyScanner(IAssemblyFinder assemblyFinder, ILogger <AssemblyScanner> logger)
        {
            this.assemblyFinder = assemblyFinder ?? throw new ArgumentNullException(nameof(assemblyFinder));
            this.logger         = logger ?? throw new ArgumentNullException(nameof(logger));

            LoadAssemblies();
        }
예제 #2
0
        private static IEnumerable <Assembly> GetReferencedAssemblies(IAssemblyFinder finder, Type type)
        {
            MicroStrutLibraryExceptionHelper.IsNull(finder, typeof(ReflectionHelper).FullName, LogLevel.Error, "类型查找器为空!");
            MicroStrutLibraryExceptionHelper.IsNull(type, typeof(ReflectionHelper).FullName, LogLevel.Error, "类型为空!");

            Assembly typeAssembly = type.GetTypeInfo().Assembly;

            return(finder.GetAssemblies().Where(assembly =>
            {
                if (assembly.IsDynamic)
                {
                    return false;
                }

                if (assembly.FullName == typeAssembly.FullName)
                {
                    return true;
                }

                return assembly.GetReferencedAssemblies().Any(assemblyName =>
                {
                    return assemblyName.FullName == typeAssembly.FullName;
                });
            }));
        }
 public FunctionHandler(IAssemblyFinder assemblyFinder, ILoggerFactory loggerFactory, IActionDescriptorCollectionProvider actionProvider, IServiceProvider serviceProvider)
 {
     _assemblyFinder  = assemblyFinder;
     _logger          = loggerFactory.CreateLogger(typeof(FunctionHandler));
     _actionProvider  = actionProvider;
     _serviceProvider = serviceProvider;
 }
 public EntityConfigsBootstrapper(IRepository <EntityConfig, Guid> entityConfigRepository, IEntityConfigurationStore entityConfigurationStore, IAssemblyFinder assembleFinder, IRepository <EntityProperty, Guid> entityPropertyRepository, IMetadataProvider metadataProvider)
 {
     _entityConfigRepository   = entityConfigRepository;
     _entityConfigurationStore = entityConfigurationStore;
     _assembleFinder           = assembleFinder;
     _entityPropertyRepository = entityPropertyRepository;
     _metadataProvider         = metadataProvider;
 }
 public AutoMapperBootstrapper(IAssemblyFinder assemblyFinder = null)
 {
     _typeFinder = new TypeFinder();
     if (assemblyFinder != null)
     {
         _typeFinder.AssemblyFinder = assemblyFinder;
     }
 }
예제 #6
0
 public ApplicationEngine(IAssemblyFinder assemblyFinder,
                          IAssemblyFilter assemblyFilter,
                          IAssemblyListWriterFactory assemblyListWriterFactory)
 {
     _assemblyFinder            = assemblyFinder;
     _assemblyFilter            = assemblyFilter;
     _assemblyListWriterFactory = assemblyListWriterFactory;
 }
        public CachingAssemblyFinderDecorator(IAssemblyFinder innerFinder)
        {
            ArgumentUtility.CheckNotNull("innerFinder", innerFinder);

            _innerFinder = innerFinder;
            _resultCache = new Lazy <IReadOnlyCollection <Assembly> > (
                () => _innerFinder.FindAssemblies().ToList().AsReadOnly(),
                LazyThreadSafetyMode.ExecutionAndPublication);
        }
예제 #8
0
        public static List <Tuple <string, string, Type> > GetTypeNameList(IAssemblyFinder finder, Type type)
        {
            MicroStrutLibraryExceptionHelper.IsNull(finder, typeof(ReflectionHelper).FullName, LogLevel.Error, "类型查找器为空!");
            MicroStrutLibraryExceptionHelper.IsNull(type, typeof(ReflectionHelper).FullName, LogLevel.Error, "类型为空!");

            //获取可用程序集
            IEnumerable <Assembly> assemblies = GetReferencedAssemblies(finder, type);

            //获取可用类型
            return(GetTypeNameList(assemblies, type));
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="ConventionSyntax"/> class.
 /// </summary>
 /// <param name="bindingBuilder">The binding builder.</param>
 /// <param name="assemblyFinder">The assembly finder.</param>
 /// <param name="typeFilter">The type filter.</param>
 /// <param name="bindingGeneratorFactory">The binding generator factory.</param>
 public ConventionSyntax(
     IConventionBindingBuilder bindingBuilder,
     IAssemblyFinder assemblyFinder,
     ITypeFilter typeFilter,
     IBindingGeneratorFactory bindingGeneratorFactory)
 {
     this.bindingBuilder          = bindingBuilder;
     this.assemblyFinder          = assemblyFinder;
     this.typeFilter              = typeFilter;
     this.bindingGeneratorFactory = bindingGeneratorFactory;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ConventionSyntax"/> class.
 /// </summary>
 /// <param name="bindingBuilder">The binding builder.</param>
 /// <param name="assemblyFinder">The assembly finder.</param>
 /// <param name="typeFilter">The type filter.</param>
 /// <param name="bindingGeneratorFactory">The binding generator factory.</param>
 public ConventionSyntax(
     IConventionBindingBuilder bindingBuilder, 
     IAssemblyFinder assemblyFinder,
     ITypeFilter typeFilter,
     IBindingGeneratorFactory bindingGeneratorFactory)
 {
     this.bindingBuilder = bindingBuilder;
     this.assemblyFinder = assemblyFinder;
     this.typeFilter = typeFilter;
     this.bindingGeneratorFactory = bindingGeneratorFactory;
 }
        private static Dictionary <string, Type> GetRegisterTypes(IServiceProvider provider)
        {
            IAssemblyFinder assemblyFinder = provider.GetRequiredService <IAssemblyFinder>();

            IEnumerable <Type> registerTypes = ReflectionHelper.GetDerivedTypes(assemblyFinder, typeof(ICacheRegister));

            Dictionary <string, Type> result = new Dictionary <string, Type>();

            foreach (Type registerType in registerTypes)
            {
                TypeNameAttribute attr = ReflectionHelper.GetTypeName(registerType);
                if (attr != null)
                {
                    result.Add(attr.Name, registerType);
                }
            }

            return(result);
        }
        public static IServiceCollection AddConfiguration(this IServiceCollection services, IConfigurationRoot root)
        {
            MicroStrutLibraryExceptionHelper.IsNull(root, typeof(IServiceCollectionExtensions).FullName, LogLevel.Error, "根配置为空!");

            services.AddSingleton <IConfigurationRoot>(root);

            IServiceProvider provider = services.BuildServiceProvider();

            IAssemblyFinder assemblyFinder = provider.GetRequiredService <IAssemblyFinder>();

            var registerType      = typeof(IConfigurationRegister);
            var registerInstances = ReflectionHelper.GetDerivedTypes(assemblyFinder, registerType).Select(type =>
            {
                return((IConfigurationRegister)Activator.CreateInstance(type));
            });

            foreach (var register in registerInstances.ToList())
            {
                register.Register(services, root);
            }

            return(services);
        }
예제 #13
0
 public BasicTypeFinder(IAssemblyFinder assemblyFinder)
 {
     _assemblyFinder = assemblyFinder;
 }
예제 #14
0
 public TypeFinder(IAssemblyFinder assemblyFinder, ILogger <TypeFinder> logger)
 {
     _assemblyFinder = assemblyFinder;
     Logger          = logger;
 }
 public AutoSettingsProvider(IAssemblyFinder assemblyFinder)
 {
     _assemblyFinder = assemblyFinder;
 }
 public PermissionProviderFinder()
 {
     AssemblyFinder = DefaultAssemblyFinder.Instance;
 }
예제 #17
0
 /// <exception cref="ArgumentNullException"><paramref name="assemblyFinder"/> is <see langword="null" />.</exception>
 public TypeFinder(IAssemblyFinder assemblyFinder)
 {
     _assemblyFinder = assemblyFinder ?? throw new ArgumentNullException(nameof(assemblyFinder));
 }
예제 #18
0
 public AbpModuleLoader(AbpModuleCollection modules)
 {
     _modules = modules;
     AssemblyFinder = DefaultAssemblyFinder.Instance;
     Logger = NullLogger.Instance;
 }
 public DefaultPermissionProviderFinder()
 {
     AssemblyFinder = DefaultAssemblyFinder.Instance;
 }
예제 #20
0
 /// <summary>
 /// Constructor.
 /// </summary>
 public TypeFinder()
 {
     AssemblyFinder = CurrentDomainAssemblyFinder.Instance;
     Logger = NullLogger.Instance;
 }
예제 #21
0
 public PermissionedObjectProviderBase(IAssemblyFinder assembleFinder)
 {
     _assembleFinder = assembleFinder;
 }
예제 #22
0
 public TypeFinder(IAssemblyFinder assemblyFinder)
 {
     _assemblyFinder = assemblyFinder;
 }
 public ApiPermissionedObjectProvider(IAssemblyFinder assembleFinder, IApiDescriptionGroupCollectionProvider apiDescriptionsProvider) : base(assembleFinder)
 {
     _apiDescriptionsProvider = apiDescriptionsProvider;
 }
예제 #24
0
 /// <summary>
 /// 初始化一个新的<see cref="TypeFinder"/>对象
 /// </summary>
 public TypeFinder()
 {
     //AssemblyFinder = CurrentDomainAssemblyFinder.Instance;
     AssemblyFinder = CurrentDomainBinDirectoryFinder.Instance;
 }
 public DefaultModuleFinder()
 {
     AssemblyFinder = DefaultAssemblyFinder.Instance;
 }
        public void SetUp()
        {
            _mockRepository = new MockRepository();

            _finderMock = _mockRepository.StrictMock <IAssemblyFinder> ();
        }
예제 #27
0
 public TypeFinder(IAssemblyFinder assemblyFinder)
 {
     _assemblyFinder = assemblyFinder;
     Logger          = LogManager.GetLogger(GetType());
 }
예제 #28
0
        public TypeFinder(IAssemblyFinder assemblyFinder)
        {
            _assemblyFinder = assemblyFinder;

            _types = new Lazy <IReadOnlyList <Type> >(FindAll, LazyThreadSafetyMode.ExecutionAndPublication);
        }
예제 #29
0
 public AutoMapperBootstrapper(IAssemblyFinder assemblyFinder=null)
 {
     _typeFinder = new TypeFinder();
     if (assemblyFinder != null)
         _typeFinder.AssemblyFinder = assemblyFinder;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="AssemblyFinderTypeDiscoveryService"/> class with a specific <see cref="AssemblyFinder"/>
 /// instance.
 /// </summary>
 /// <param name="assemblyFinder">The assembly finder used by this service instance to retrieve types.</param>
 public AssemblyFinderTypeDiscoveryService(IAssemblyFinder assemblyFinder)
 {
     ArgumentUtility.CheckNotNull("assemblyFinder", assemblyFinder);
     _assemblyFinder = assemblyFinder;
     _baseTypeCache  = new Lazy <BaseTypeCache> (CreateBaseTypeCache);
 }
예제 #31
0
 public TypeFinder()
 {
     AssemblyFinder = CurrentDomainAssemblyFinder.Instance;
     //Logger = NullLogger.Instance;
 }
예제 #32
0
 public TypeFinder(IAssemblyFinder assemblyFinder)
 {
     _assemblyFinder = assemblyFinder;
     Logger          = NullLogger.Instance;
 }
예제 #33
0
 public DefaultTypeFinder(IAssemblyFinder assemblyFinder)
 {
     _assemblyFinder = assemblyFinder;
 }
예제 #34
0
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="assemblyFinder"></param>
 public AppDomainTypeFinder(IAssemblyFinder assemblyFinder)
 {
     _assemblyFinder = assemblyFinder;
 }
예제 #35
0
 public TypeFinder(IAssemblyFinder assemblyFinder)
 {
     _assemblyFinder = assemblyFinder;
     Logger = NullLogger.Instance;
 }
예제 #36
0
 public TypeFinder()
 {
     AssemblyFinder = CurrentDomainAssemblyFinder.Instance;
 }
예제 #37
0
 public AbpEntityFrameworkModule()
 {
     AssemblyFinder = DefaultAssemblyFinder.Instance;
 }
예제 #38
0
 public EntityPermissionedObjectProvider(IAssemblyFinder assembleFinder) : base(assembleFinder)
 {
 }
예제 #39
0
 public DbConfiguration()
 {
     AssemblyFinder =new  CurrentDomainAssemblyFinder();
 }