元のソースを変更してもキャッシュ内のオブジェクトが変更されないように、複製されたオブジェクトのリストをキャッシュに追加しようとしています。ただし、必要なタイプとしてそれらをキャッシュに追加することはできません。
List<ComputerStatus> clonedCopy = listOfComputers.Select(s => s.Clone()).ToList();
というエラーが表示されます"Cannot implicitly convert type 'System.Collections.Generic.List<object>' to 'System.Collections.Generic.List<MvcWebAPI.Models.ComputerStatus>'"
それをキャッシュに追加するだけなら
var clonedCopy = listOfComputers.Select(s => s.Clone());
CacheManager.AddToCache("myKey", clonedCopy, CacheItemPriority.Default, 30);
そして、それを次のように取得しようとします
List<ComputerStatus> listOfComputers = new List<ComputerStatus>();
listOfComputers = CacheManager.GetFromCache("myKey") as List<ComputerStatus>;
その後、null を返します
これは私の ComputerStatus クラスがどのように見えるかです:
public class ComputerStatus : ICloneable
{
public string Property1 { get; set; }
public string Property2 { get; set; }
public string Property3 { get; set; }
public object Clone()
{
return this.MemberwiseClone();
}
}