AutoFac在非Web项目中使用

添加类

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

            //注册当前程序集的所有类成员
            //builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly()).AsImplementedInterfaces().AsSelf();
        

          //builder.RegisterType<dataInit1>().Named<IDataInitialization>("function");
          //builder.RegisterType<dataInit2>().Named<IDataInitialization>("zagconfig");


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

      public static T GetFromFac<T>(string named)
      {
        return _container.ResolveNamed<T>(named);
      }


    }

 

(form)在项目入口使用:

    static class Program
    { 
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            AutofacBuilder.init(); //使用
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
            
        } 
    }

静态全局使用:

var srv1 = AutofacBuilder.GetFromFac<IDataInitialization>(); 

 

posted @ 2022-05-23 14:05  后跳  阅读(48)  评论(0)    收藏  举报