Как разрешить именованный экземпляр из статического класса? - PullRequest
2 голосов
/ 30 июля 2010

Кто-нибудь имеет представление о том, что я делаю неправильно?

У меня есть такой статический класс:

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.");
    }
}

В Global.asax.cs моего приложения MVC у меня есть:

    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 голосов
/ 30 июля 2010

Я полагаю, что вы не можете скомпилировать этот код, так как вы пропускаете закрывающий ')' для вашего .Resolve(...) вызова.

Тем не менее, вы смотрели на интеграцию Autofac ASP.Net модули?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...