风轻云淡

-------生活没有抱怨,只有自己的不努力,当才华撑不起梦想与野心,不断学习是你唯一的选择。没有伞的孩子必须努力奔跑...

导航

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);
        }
    }

 

posted on 2020-05-15 10:11  淡然→笑  阅读(4991)  评论(2编辑  收藏  举报