Azure appfabric缓存,从Linq到SQL的匿名类的序列化问题



我在将匿名类的列表<>放入缓存时遇到问题。

var cache = new DataCacheFactory().GetCache("default");
var parts = somethingIQueryable.Select(i => new { i.s1, i.s2 } );
cache.Put("somekey", parts.ToList(), TimeSpan.FromMinutes(2));

这会抛出一个序列化异常。但是,如果我将数据放在这样的类中,它就会工作:

public class A { public string s1, public string s2 }    
var cache = new DataCacheFactory().GetCache("default");
var parts = somethingIQueryable.Select(i => new A { s1 = i.s1, s2 = i.s2 } );
cache.Put("somekey", parts.ToList(), TimeSpan.FromMinutes(2));

我宁愿不定义类的每一点数据进入缓存,虽然,并想知道是否有一种方法,使第一个例子的工作?

您将无法序列化匿名类型并将它们存储在这样的缓存中,不幸的是,您需要创建List<A>并存储它。

这可能是因为没有什么可以比较匿名类型来进行序列化和反序列化。简单地说,它无法知道匿名类型是什么,因为顾名思义,它是匿名的。

最新更新