我想在下面的班级中添加一个新属性bool IsValid。我希望此属性不是必需的,默认情况下设置为false。我将此对象用于wcf目的,如何将默认值设置为false?
[DataContract]
public class OrderLineItem : IExtensibleDataObject
{
ExtensionDataObject IExtensibleDataObject.ExtensionData { get; set; }
[DataMember]
public Guid LineItemID { get; set; }
[DataMember(IsRequired = true, EmitDefaultValue=false)]
public string ProductID { get; set; }
[DataMember(IsRequired = true, EmitDefaultValue=false)]
public decimal Quantity { get; set; }
}
答案 0 :(得分:12)
更新:我在回答它时考虑如何为任意类型定义默认值,但是,正如@HatSoft在评论中提到的那样,您不需要做任何事情来设置{{ 1}}作为false
属性的默认值,因为它已经是该类型的默认值。不过,我会在一般情况下留下这个答案。
无法在[DataMember]属性本身上设置默认值,但您可以使用[OnDeserializing]回调来设置它。这样,如果它不是来自线路,它将具有在反序列化之前运行的代码设置的值。
bool
答案 1 :(得分:4)
默认情况下它将为false,因此无需其他任何操作。
[DataMember]
public bool IsValid { get; set; }
答案 2 :(得分:0)
我建议你做以下事情:
private string _recordId;
[DataMember]
public String RecordId
{
get { return _recordId ?? (_recordId = Guid.NewGuid().ToString()); }
set { _recordId = value; }
}
这里“_recordId = Guid.NewGuid()。ToString());”当对象
时,将默认值设置为Guid