[DataContract] を介してクライアント側で利用できるようにするサーバー側クラスがあります。このクラスには、プロパティを通じて利用できるようにしたい読み取り専用フィールドがあります。ただし、get と set の両方を使用せずに [DataMember] プロパティを追加することは許可されていないように見えるため、そうすることができません。
だから - セッターなしで [DataMember] プロパティを持つ方法はありますか?
[DataContract]
class SomeClass
{
private readonly int _id;
public SomeClass() { .. }
[DataMember]
public int Id { get { return _id; } }
[DataMember]
public string SomeString { get; set; }
}
または、ソリューションは [DataMember] をフィールドとして使用しますか? (たとえば、ここに示されているように)? これもやってみましたが、フィールドが読み取り専用であることを気にしていないようです..?
編集:このようにハッキングして読み取り専用プロパティを作成する唯一の方法はありますか? (いや、やりたくない…)
[DataMember]
public int Id
{
get { return _id; }
private set { /* NOOP */ }
}