我有一组数据协定,它们充当我们希望公开的基类的包装器。一个简单的例子是:
[DataMember]
public List<decimal> Points
{
get
{
return sourceObject.ListPoints();
}
private set{}
}
我们还有其他一些属性需要先按下数据(我们正在转换对象图,需要防止循环引用)。
我们看到的问题是,此getter将在服务操作中触发两次,然后在序列化期间再次触发。这导致了两个问题:
答案 0 :(得分:0)
您可以简单地“缓存”这些值。例如:
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;
}
}
}