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>();
浙公网安备 33010602011771号