AutoFac在非Web專案中使用
阿新 • • 發佈:2022-05-23
新增類
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>();