我想在下面的班级中添加一个新属性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; }
}
Run Code Online (Sandbox Code Playgroud)
car*_*ira 12
更新:我回答它考虑如何为任意类型定义默认值,但是,正如注释中提到的@HatSoft,您不需要做任何事情来设置属性false的默认值bool,因为它已经是该类型的默认值.不过,我会在一般情况下留下这个答案.
无法在[DataMember]属性本身上设置默认值,但您可以使用[OnDeserializing]回调来设置它.这样,如果它不是来自线路,它将具有在反序列化之前运行的代码设置的值.
[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; }
[DataMember(IsRequired = false, EmitDefaultValue = false)]
public bool IsValid { get; set; }
[OnDeserializing]
void BeforeDeserialization(StreamingContext ctx)
{
this.IsValid = false;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7368 次 |
| 最近记录: |