如何从静态类中解析命名实例?

时间:2010-07-30 08:09:11

标签: c# asp.net-mvc-2 ioc-container autofac

有没有人知道我做错了什么?

我有一个这样的静态类:

public static class ApplicationContainer
{
    private static ContainerBuilder builder = null;
    private static IContainer container = null;

    public static void Create()
    {
        builder = new ContainerBuilder();

        builder.RegisterInstance(new Repository<Log>(RepositoryType.Main))
            .As<IRepository<Log>>().SingleInstance()
            .Named("Log", typeof(Repository<Log>));

        container = builder.Build();
    }     

    public static IContainer Container()
    {
        if (container != null) return container;
        throw new Exception("Container is not ready.");
    }
}

在我的MVC应用程序的Global.asax.cs中,我有:

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        ApplicationContainer.Create(); 

        RegisterRoutes(RouteTable.Routes);
    }

现在关于问题:如何从容器中解析命名实例?

public class DefaultLogger : ILogger
{
    ApplicationContainer.Container().Resolve("Log", typeof(Repository<Log>);// <--- does not work
}

但是当ApplicationContainer类不是静态的时,从容器中解析非常好。 我使用autofac 2.2.4。

1 个答案:

答案 0 :(得分:0)

我相信您无法编译此代码,因为您错过了.Resolve(...)来电的结束时间。

那就是说,你看过Autofac ASP.Net integration模块吗?