AutoFac在非Web项目中使用


添加类

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

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

          //builder.RegisterType().Named("function");
          //builder.RegisterType().Named("zagconfig");


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

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


    }

(form)在项目入口使用:

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

静态全局使用:

var srv1 = AutofacBuilder.GetFromFac();