windows服务/winform中使用Autofac依赖注入

其实Windows服务使用autofac注入很简单,只需要简单的配置然后调用Build就可以。以下代码winform中同样可以用

/*

.Net framework 4.5

Autofac 4.9.4.0

EF 6

App.config 中connectionStrings的配置和winform一样

*/

----AutofacBuilder.cs

public  class AutofacBuilder
    {
        private static IContainer _container; 
        public static void init()
        {  
            ContainerBuilder builder = new ContainerBuilder();  
            //配置接口依赖
//            builder.RegisterType<MyDbContext>().As<DbContext>(); //EF依赖注入 
//            builder.RegisterType<Service1>().As<Service1>(); //这一句可以不要,因为下面已经把当前程序集下的类注入了ico容器
          
            //注册当前程序集的所有类成员
            builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
                .AsImplementedInterfaces().AsSelf();

            _container = builder.Build();  //只有在Build之后,才能调用GetFromFac
        }
        public static T GetFromFac<T>()
        {
            return _container.Resolve<T>();
        }
    }

-----Program.cs

 static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        static void Main()
        {

            //windows服务初始化工作
            AutofacBuilder.init();
          
            var srv1=AutofacUtil.GetFromFac<Service1>(); //获取服务Service1
            ServiceBase.Run(srv1);
        }
    }

原文地址:https://www.cnblogs.com/pzxnet/p/12893264.html