Ejemplo n.º 1
0
 /// <summary>
 /// 初始化一个<see cref="IocInitializerBase"/>类型的新实例
 /// </summary>
 protected IocInitializerBase()
 {
     AssemblyFinder          = new DirectoryAssemblyFinder();
     TransientTypeFinder     = new TransientDependencyTypeFinder();
     LifetimeScopeTypeFinder = new LifetimeScopeDependencyTypeFinder();
     SingletonTypeFinder     = new SingletonDependencyTypeFinder();
 }
Ejemplo n.º 2
0
 /// <summary>
 /// 初始化一个<see cref="ServiceBuildOptions"/>类型的新实例
 /// </summary>
 public ServiceBuildOptions()
 {
     AssemblyFinder      = new DirectoryAssemblyFinder();
     TransientTypeFinder = new TransientDependencyTypeFinder();
     ScopeTypeFinder     = new ScopeDependencyTypeFinder();
     SingletonTypeFinder = new SingletonDependencyTypeFinder();
 }
Ejemplo n.º 3
0
        /// <summary>
        /// 初始化
        /// </summary>
        public static void InitIoc()
        {
            var assemblies = new DirectoryAssemblyFinder().FindAll();
            var builder    = new ContainerBuilder();
            // Get your HttpConfiguration.
            var  config = GlobalConfiguration.Configuration;
            Type PerLifetimeScopeType = typeof(IScopeDependency);
            Type PerDependencyType    = typeof(ITransientDependency);
            Type SingleInstanceType   = typeof(ISingletonDependency);

            builder.RegisterAssemblyTypes(assemblies.ToArray())
            .Where(type => PerLifetimeScopeType.IsAssignableFrom(type) && !type.IsAbstract)
            .AsSelf()                    //自身服务,用于没有接口的类
            .AsImplementedInterfaces()   //接口服务
            .PropertiesAutowired()       //属性注入
            .InstancePerLifetimeScope(); //PerLifetimeScope

            builder.RegisterAssemblyTypes(assemblies.ToArray())
            .Where(type => PerDependencyType.IsAssignableFrom(type) && !type.IsAbstract)
            .AsSelf()                  //自身服务,用于没有接口的类
            .AsImplementedInterfaces() //接口服务
            .PropertiesAutowired()     //属性注入
            .InstancePerDependency();  //PerDependency

            builder.RegisterAssemblyTypes(assemblies.ToArray())
            .Where(type => SingleInstanceType.IsAssignableFrom(type) && !type.IsAbstract)
            .AsSelf()                  //自身服务,用于没有接口的类
            .AsImplementedInterfaces() //接口服务
            .PropertiesAutowired()     //属性注入
            .SingleInstance();         //SingleInstance


            builder.RegisterType <WebApiIocResolver>().As <IIocResolver>().AsSelf() //自身服务,用于没有接口的类
            .AsImplementedInterfaces()                                              //接口服务
            .PropertiesAutowired()                                                  //属性注入;
            .SingleInstance();

            builder.RegisterApiControllers(Assembly.GetExecutingAssembly()).AsSelf().AsImplementedInterfaces().PropertiesAutowired();
            builder.RegisterWebApiFilterProvider(config);
            var container = builder.Build();

            config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
        }
Ejemplo n.º 4
0
        protected override void Load(ContainerBuilder builder)
        {
            Type baseType = typeof(IDependency);

            DirectoryAssemblyFinder daf = new DirectoryAssemblyFinder();
            var assemblyss = daf.FindAll();

            //调试用
            //var AllServices = assemblyss
            //   .SelectMany(s => s.GetTypes())
            //   .Where(p => baseType.IsAssignableFrom(p) && p != baseType).ToArray();


            builder.RegisterAssemblyTypes(assemblyss)
            .Where(p => baseType.IsAssignableFrom(p) && p != baseType)
            .AsImplementedInterfaces().PropertiesAutowired()
            .InstancePerLifetimeScope();
            //注入泛型仓储服务,支持多上下文
            builder.RegisterGeneric(typeof(Repository <,>)).As(typeof(IRepository <,>)).PropertiesAutowired().InstancePerLifetimeScope();
        }
Ejemplo n.º 5
0
        public static void RegisterMappings()
        {
            //获取所有IProfile实现类4
            var assembly = new DirectoryAssemblyFinder().FindAll().FirstOrDefault(a => a.FullName.Contains("Sy.Module.Mapper.Customs"));
            var allType  = assembly.GetTypes().Where(a => typeof(IProfile).IsAssignableFrom(a));

            //var allType =
            //Assembly
            //   .GetEntryAssembly()//获取默认程序集
            //   .GetReferencedAssemblies()//获取所有引用程序集
            //   .Select(Assembly.Load)
            //   .SelectMany(y => y.DefinedTypes)
            //   .Where(type => typeof(IProfile).GetTypeInfo().IsAssignableFrom(type.AsType()));

            foreach (var typeInfo in allType)
            {
                //注册映射
                AutoMapper.Mapper.Initialize(y =>
                {
                    y.AddProfiles(typeInfo); // Initialise each Profile classe
                });
            }
        }
Ejemplo n.º 6
0
 /// <summary>
 /// 初始化一个<see cref="IocBuilderBase"/>类型的新实例
 /// </summary>
 /// <param name="services">服务信息集合</param>
 protected IocBuilderBase(IServiceCollection services)
 {
     AssemblyFinder = new DirectoryAssemblyFinder();
     _services      = services.Clone();
     _isBuilded     = false;
 }
Ejemplo n.º 7
0
 /// <summary>
 /// 初始化一个<see cref="EntityMapperAssemblyFinder"/>类型的新实例
 /// </summary>
 public EntityMapperAssemblyFinder()
 {
     AllAssemblyFinder = new DirectoryAssemblyFinder();
 }
Ejemplo n.º 8
0
 /// <summary>
 /// 初始化一个<see cref="ControllerTypeFinder"/>类型的新实例
 /// </summary>
 public ControllerTypeFinder()
 {
     AssemblyFinder = new DirectoryAssemblyFinder();
 }
 /// <summary>
 /// 初始化一个<see cref="TransientDependencyTypeFinder"/>类型的新实例
 /// </summary>
 public TransientDependencyTypeFinder()
 {
     AssemblyFinder = new DirectoryAssemblyFinder();
 }
Ejemplo n.º 10
0
 /// <summary>
 /// 初始化一个<see cref="IocBuilderBase"/>类型的新实例
 /// </summary>
 protected IocBuilderBase()
 {
     AssemblyFinder = new DirectoryAssemblyFinder();
 }
Ejemplo n.º 11
0
 /// <summary>
 /// 初始化一个<see cref="EntityTypeFinder"/>类型的新实例
 /// </summary>
 public EntityTypeFinder()
 {
     AssemblyFinder = new DirectoryAssemblyFinder();
 }
Ejemplo n.º 12
0
 /// <summary>
 /// 初始化一个<see cref="SingletonDependencyTypeFinder"/>类型的新实例
 /// </summary>
 public SingletonDependencyTypeFinder()
 {
     AssemblyFinder = new DirectoryAssemblyFinder();
 }
Ejemplo n.º 13
0
 /// <summary>
 /// 初始化一个<see cref="ScopeDependencyTypeFinder"/>类型的新实例
 /// </summary>
 public ScopeDependencyTypeFinder()
 {
     AssemblyFinder = new DirectoryAssemblyFinder();
 }
Ejemplo n.º 14
0
 /// <summary>
 /// 初始化一个<see cref="HubTypeFinder"/>类型的新实例
 /// </summary>
 public HubTypeFinder()
 {
     AssemblyFinder = new DirectoryAssemblyFinder();
 }