EntLibを3.1から5.0にアップグレードしようとすると、キャッシュに関して奇妙な問題が発生します。キャッシングに関連するすべての単体テストがスローされます。
failed: System.ArgumentException : Type does not provide a constructor taking a single parameter type of NameValueCollection
EntLibに付属しているデフォルトのCacheMangerを使用しており、v3で正常に動作しますが、Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager
クラスを見ると、3.1バージョンまたは5.0バージョンのいずれにも関連するコンストラクターが表示されません。
[ConfigurationNameMapper(typeof(CacheManagerDataRetriever)), CustomFactory(typeof(CacheManagerCustomFactory))]
public class CacheManager : IDisposable
{
// Methods
internal CacheManager(Cache realCache, BackgroundScheduler scheduler, ExpirationPollTimer pollTimer)
{
this.realCache = realCache;
this.scheduler = scheduler;
this.pollTimer = pollTimer;
}
EntLib構成ツールから作成した構成は次のとおりです。
<cachingConfiguration defaultCacheManager="Whatever">
<cacheManagers>
<add name="Whatever" type="Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager, Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
expirationPollFrequencyInSeconds="60" maximumElementsInCacheBeforeScavenging="1000"
numberToRemoveWhenScavenging="10" backingStoreName="Null Storage" />
</cacheManagers>
移行ガイドを見ましたが、何も表示されませんでした。
CacheManager用に独自のラッパーを作成することが期待されていますか?