本文整理汇总了C#中CacheManager.GetOrCreate方法的典型用法代码示例。如果您正苦于以下问题:C# CacheManager.GetOrCreate方法的具体用法?C# CacheManager.GetOrCreate怎么用?C# CacheManager.GetOrCreate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CacheManager
的用法示例。
在下文中一共展示了CacheManager.GetOrCreate方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: NormalTest
public void NormalTest()
{
var manager = new CacheManager<int, CacheObject>(CreateObject, 1000);
var obj1 = manager.GetOrCreate(100);
Assert.AreEqual(100, obj1.ObjectSize);
Assert.AreEqual(1, manager.Count);
Assert.AreEqual(100, manager.CacheSize);
var obj1_2 = manager.GetOrCreate(100);
Assert.AreEqual(obj1, obj1_2);
Assert.AreEqual(1, manager.Count);
Assert.AreEqual(100, manager.CacheSize);
// size=500のオブジェクトは追加でキャッシュされるはず。
var obj5 = manager.GetOrCreate(500);
Assert.AreEqual(2, manager.Count);
Assert.AreEqual(600, manager.CacheSize);
// size=600のオブジェクトはsize100と500をまとめて削除するはず。
var obj6 = manager.GetOrCreate(600);
Assert.AreEqual(1, manager.Count);
Assert.AreEqual(600, manager.CacheSize);
// もう一回size=100のオブジェクトを作ると、新規作成されるはず。
var obj1_3 = manager.GetOrCreate(100);
Assert.AreEqual(2, manager.Count);
Assert.AreEqual(700, manager.CacheSize);
Assert.AreNotEqual(obj1, obj1_3);
// もう一回size=500のオブジェクトを作ると、新規作成されるはず。
var obj5_2 = manager.GetOrCreate(500);
Assert.AreEqual(2, manager.Count);
Assert.AreEqual(600, manager.CacheSize);
Assert.AreNotEqual(obj5, obj5_2);
}
示例2: MinusTest
public void MinusTest()
{
var manager = new CacheManager<int, CacheObject>(CreateObject, 100);
// ObjectSizeが負数になるようなオブジェクトを作成した場合
Assert.Catch(() => manager.GetOrCreate(-100));
}
示例3: ExceptionTest
public void ExceptionTest()
{
var manager = new CacheManager<int, ExceptionObject>(CreateExceptionObject, 100);
Assert.Catch(typeof(InvalidOperationException), () => manager.GetOrCreate(100));
}
示例4: RandomTest
public void RandomTest()
{
var manager = new CacheManager<int, CacheObject>(CreateObject, 100);
// ObjectSizeが乱数を返すようなオブジェクトを登録する。
var robj = manager.GetOrCreate(int.MaxValue);
Assert.AreEqual(typeof(RandomCacheObject), robj.GetType());
Assert.AreEqual(1, manager.Count);
// size=200を登録すると、他の全てのオブジェクトが削除されるため、
// この状態でCacheSizeが元に戻るか確認する。
var obj2 = manager.GetOrCreate(200);
Assert.AreEqual(1, manager.Count);
Assert.AreEqual(200, manager.CacheSize);
}