从给定的DataContract我想只显示Benefits
的一个XML节点。
因为,有一次,3个DataMembers房屋,汽车和股票中只有一个不会为空。
public class WebAPIModel
{
[DataMember(Name = "Benefits")]
public List<House> Houses { get; set; }
[DataMember(Name = "Benefits")]
public List<Car> Cars { get; set; }
[DataMember(Name = "Benefits")]
public List<Share> Shares { get; set; }
}
(显然目前这不起作用)
如何使结果XML只显示一个节点Benefits
?
我尝试了类似......
// Since only one property is not null at one time
// I thought EmitDefaultValue will do the trick .. but it doesn't
[DataMember(Name = "Benefits", EmitDefaultValue = false)]
答案 0 :(得分:0)
如果是序列化,EmitDefaultValue = false就足够了。
出于显示目的:
创建一个名为&#34; Benefits&#34;的新属性,将其标记为非数据成员,实现getter。
它可能必须是通用类型,Car,Share等的共同祖先。 作为另一种选择,您可以定义新类型并在访问此新属性时动态生成其实例。
如果这种带有新属性的方法适合您,也可以考虑在仅存在于客户端应用程序中的扩展类中实现它,以减少服务器端的混乱。