我使用 DataContract 处理WCF服务中的类。因此,我需要属性 ApiCallStatus (类型:ApiCallStatus作为枚举)同时具有自动获取器和-setter器。但是要覆盖 GetHashCode ,我需要一个“只读”属性来正确实现它。有没有一种方法可以以两种要求都能正常工作并且以干净的方式实现呢?
[DataContract]
public class ApiCallStatusInformation {
[DataMember]
public ApiCallStatus ApiCallStatus { get; set; }
public bool Equals(ApiCallStatusInformation other) {
if (ReferenceEquals(null, other))
return false;
if (ReferenceEquals(this, other))
return true;
return this.ApiCallStatus == other.ApiCallStatus;
}
public override bool Equals(object obj) {
if (ReferenceEquals(null, obj))
return false;
if (ReferenceEquals(this, obj))
return true;
return obj.GetType() == this.GetType() && this.Equals((ApiCallStatusInformation) obj);
}
public override int GetHashCode() {
return (int) this.ApiCallStatus;
}
}
答案 0 :(得分:0)
一个[DataMember]
可能是private readonly
,这避免了这个问题。
之所以可能是private readonly
是因为[DataContract]
实现使用反射来设置[DataMember]
字段,这意味着private
和readonly
方面被忽略。