0

ASP.NET MVC アプリケーションにカスタム リソース プロバイダーを挿入するためにこのアプローチを採用しましたが、オブジェクトの有効期間の管理に問題があります。

私は Castle Windsor を使用しているので、ファクトリの次の実装があります。

public class DefaultResourceProviderFactory : ResourceProviderFactory
{
    public override IResourceProvider CreateGlobalResourceProvider(string classKey)
    {
        // IoC is a static helper class that gives me static access to the
        // container. IoC.Resolve<T>(args...) simply calls container.Resolve<T>(args...).
        return IoC.Resolve<IResourceProvider>(new { resourceType = "Global" });
    }

    public override IResourceProvider CreateLocalResourceProvider(string virtualPath)
    {
        // resourceType
        return IoC.Resolve<IResourceProvider>(new { ResourceType = virtualPath });
    }
}

しかし、IResourceProviderコンテナに登録した は、有効期間が正しく管理されていないようです。独自の依存関係が他にもいくつかあり、そのうちのいくつかは (Web 要求ごとまたはトランザクションごとに) やや複雑なライフスタイルを持っているIResourceProviderため、依存関係が常に有効であることを確認するために一時的なものとして登録しました。しかし、MVC フレームワークは、次の要求で依存関係が無効になったときに発生するIResourceProviderWeb 要求全体への参照を保持して、足を踏んでいます。ObjectDisposedExceptions

私がやりたいのは、MVC フレームワークが my のインスタンスを必要とするたびIResourceProviderにファクトリを使用するようにすることです。また、可能であればIoC.Release(provider)、それが完了したときに呼び出しまたは同様のことも行います。

IResourceProviderMVC フレームワークが尊重する方法で、カスタムのライフスタイルを細かく管理するにはどうすればよいですか?

4

1 に答える 1