我剛剛在我的一個應用程序上配置了它。這樣做有它不同的方式,但我喜歡這種方法:
Autofac and ASP.NET Web API System.Web.Http.Services.IDependencyResolver Integration
首先,我創建了一個實現System.Web.Http.Services.IDependencyResolver
接口的類。
internal class AutofacWebAPIDependencyResolver : System.Web.Http.Services.IDependencyResolver {
private readonly IContainer _container;
public AutofacWebAPIDependencyResolver(IContainer container) {
_container = container;
}
public object GetService(Type serviceType) {
return _container.IsRegistered(serviceType) ? _container.Resolve(serviceType) : null;
}
public IEnumerable<object> GetServices(Type serviceType) {
Type enumerableServiceType = typeof(IEnumerable<>).MakeGenericType(serviceType);
object instance = _container.Resolve(enumerableServiceType);
return ((IEnumerable)instance).Cast<object>();
}
}
我還有另一類認爲我登記:
internal class AutofacWebAPI {
public static void Initialize() {
var builder = new ContainerBuilder();
GlobalConfiguration.Configuration.ServiceResolver.SetResolver(
new AutofacWebAPIDependencyResolver(RegisterServices(builder))
);
}
private static IContainer RegisterServices(ContainerBuilder builder) {
builder.RegisterAssemblyTypes(typeof(MvcApplication).Assembly).PropertiesAutowired();
builder.RegisterType<WordRepository>().As<IWordRepository>();
builder.RegisterType<MeaningRepository>().As<IMeaningRepository>();
return
builder.Build();
}
}
然後,在Application_Start
初始化:
protected void Application_Start() {
//...
AutofacWebAPI.Initialize();
//...
}
我希望這有助於。
不幸的是,就這個評論的打字而言,似乎同時使用Autofac for MVC 4 RC和Web API RC不起作用。我收到有關在Web API框架程序集中找不到的類型的編譯器警告。我不得不使用@tugberk提供的答案,並重新實現依賴解析器來解決它。 – NathanAldenSr 2012-09-07 01:24:41