Autofac注册程序集

using Autofac;
using Eson.IDao.SqlSugarNew;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
 public class BaseContainerBo
    {
        private static IContainer _IContainer;

        private static IContainer IContainer
        {
            get
            {
                if (_IContainer != null) return _IContainer;

                var baseType = typeof(IBaseDao);
                var _ContainerBuilder = new ContainerBuilder();

                string path = "";

                var environmentPath = Path.Combine(Environment.CurrentDirectory, "1");
                var currentDomainPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "1");

                if (environmentPath.Equals(currentDomainPath))//Windows应用程序则相等
                {
                    path = AppDomain.CurrentDomain.BaseDirectory;
                }
                else
                {
                    path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "bin");
                }

                Assembly[] assemblies = Directory.GetFiles(path, "*.dll").Select(Assembly.LoadFrom).ToArray();

                //注册所有IDependency
                _ContainerBuilder.RegisterAssemblyTypes(assemblies)
                      .Where(t => baseType.IsAssignableFrom(t) && !t.IsAbstract)
                      .AsImplementedInterfaces()
                      .PropertiesAutowired();

                _IContainer = _ContainerBuilder.Build();

                return _IContainer;
            }
        }

        protected M GetInstance<M>()
            where M : IBaseDao
        {
            var manager = IContainer.Resolve<M>();
            return manager;
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_25118431/article/details/83480169
今日推荐