在AppHost类中,所有方法覆盖都使用Funq容器。我在我的ASP.NET MVC应用程序中使用Autofac(我与我的MVC应用程序并行运行SS)。
我在AppHost
中注释掉了这一行// ControllerBuilder.Current.SetControllerFactory(new FunqControllerFactory(container));
因为它弄乱了我的Autofac动力控制器。这足以阻止Autofac和Funq在我的应用程序中出现问题吗?或者Funq在其他地方将自己设置为默认DependencyResolver
?
答案 0 :(得分:9)
Func和AutoFac可以一起工作。使用ServiceStack,您可以指示func使用AutoFac适配器。此页面告诉您如何使用不同的IoC容器。它甚至提供了 AutofacIocAdapter 类的代码。 https://github.com/ServiceStack/ServiceStack/wiki/The-IoC-container
public class AutofacIocAdapter : IContainerAdapter
{
private readonly IContainer _container;
public AutofacIocAdapter(IContainer container)
{
_container = container;
}
public T Resolve<T>()
{
return _container.Resolve<T>();
}
public T TryResolve<T>()
{
T result;
if (_container.TryResolve<T>(out result))
{
return result;
}
return default(T);
}
}
然后在AppHost配置(容器容器)方法中,您需要启用此适配器:
//Create Autofac builder
var builder = new ContainerBuilder();
//Now register all depedencies to your custom IoC container
//...
//Register Autofac IoC container adapter, so ServiceStack can use it
IContainerAdapter adapter = new AutofacIocAdapter(builder.Build())
container.Adapter = adapter;
答案 1 :(得分:4)
接受的答案不处理autofac per-request子容器,这些容器被广泛使用。请参阅此处了解具有以下功能的替代IContainerAdapter: