5

在 AppHost 类中,所有方法覆盖都使用 Funq 容器。我在我的 ASP.NET MVC 应用程序中使用 Autofac(我将 SS 与我的 MVC 应用程序并排运行)。

  1. 有没有办法宁愿使用来自 global.asax.cs 的 Autofac 注册,或者这是一个过度的替换?
  2. 我在 AppHost 中注释掉了这一行

    //ControllerBuilder.Current.SetControllerFactory(new FunqControllerFactory(container));

因为它弄乱了我的 Autofac 驱动的控制器。这足以防止 Autofac 和 Funq 在我的应用程序中出现问题吗?或者 Funq 是否将自己设置为DependencyResolver其他任何地方的默认设置?

4

1 回答 1

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 Configure(Container container) 方法中你需要启用这个适配器:

//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;
于 2012-09-08T16:23:40.507 回答