windows服务/winform中使用Autofac依赖注入
其实Windows服务使用autofac注入很简单,只需要简单的配置然后调用Build就可以。以下代码winform中同样可以用
/*
.Net framework 4.5
Autofac 4.9.4.0
EF 6
App.config 中connectionStrings的配置和winform一样
*/
----AutofacBuilder.cs
public class AutofacBuilder
{
private static IContainer _container;
public static void init()
{
ContainerBuilder builder = new ContainerBuilder();
//配置接口依赖
// builder.RegisterType<MyDbContext>().As<DbContext>(); //EF依赖注入
// builder.RegisterType<Service1>().As<Service1>(); //这一句可以不要,因为下面已经把当前程序集下的类注入了ico容器
//注册当前程序集的所有类成员
builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
.AsImplementedInterfaces().AsSelf();
_container = builder.Build(); //只有在Build之后,才能调用GetFromFac
}
public static T GetFromFac<T>()
{
return _container.Resolve<T>();
}
}
-----Program.cs
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
static void Main()
{
//windows服务初始化工作
AutofacBuilder.init();
var srv1=AutofacUtil.GetFromFac<Service1>(); //获取服务Service1
ServiceBase.Run(srv1);
}
}