2

誰かが私が間違っていることについて何か考えがありますか?

私はそのような静的クラスを持っています:

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 を使用しています。

4

1 に答える 1

0

呼び出しの終了 ')' がないため、このコードをコンパイルできないと思います.Resolve(...)

そうは言っても、Autofac ASP.Net 統合モジュールを見たことがありますか?

于 2010-07-30T10:33:23.370 に答える