2 Stimmen

Wie löst man eine benannte Instanz aus einer statischen Klasse auf?

Hat jemand eine Idee, was ich falsch mache?

Ich habe eine solche statische Klasse:

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

In Global.asax.cs meiner MVC-Anwendung habe ich:

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

        ApplicationContainer.Create(); 

        RegisterRoutes(RouteTable.Routes);
    }

Und jetzt über Problem: wie kann ich benannte Instanz aus einem Container auflösen?

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

Aber wenn die ApplicationContainer-Klasse nicht statisch ist, funktioniert das Auflösen vom Container sehr gut. Ich verwende autofac 2.2.4.

0voto

Peter Lillevold Punkte 32995

Ich glaube, Sie können diesen Code nicht kompilieren, da Ihnen ein abschließendes ')' für Ihre .Resolve(...) anrufen.

Haben Sie sich aber auch die Autofac ASP.Net-Integration Module?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X