我有一组数据契约,它们充当我们希望公开的基类的包装器。一个简单的例子是:
[DataMember]
public List<decimal> Points
{
get
{
return sourceObject.ListPoints();
}
private set{}
}我们还有其他一些必须首先处理数据的属性(我们正在转换对象图,并且需要防止循环引用)。
我们看到的问题是,这个getter将触发两次,一次在服务操作中,然后在序列化期间再次触发。这造成了两个问题:
。
发布于 2010-04-20 15:12:49
您可以简单地“缓存”这些值。例如:
public class MyWrapper
{
public MyWrapper(SourceObject sourceObject)
{
this.Points = sourceObject.ListPoints();
}
[DataMember]
public List<decimal> Points { get; private set; }
}编辑:或者更懒惰:
public class MyWrapper
{
public MyWrapper(SourceObject sourceObject)
{
}
private List<decimal> points;
[DataMember]
public List<decimal> Points
{
get
{
if (this.points == null)
{
this.points = sourceObject.ListPoints();
}
return this.points;
}
}
}https://stackoverflow.com/questions/2676197
复制相似问题