1. 程式人生 > 其它 >AutoFac在非Web專案中使用

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(); _container = builder.Build(); //只有在Build之後,才能呼叫GetFromFac
} public static T GetFromFac<T>() { return _container.Resolve<T>(); } }

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