尝试将 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 创建自己的包装器?