WCF 地獄の 74 番目のラングに到達しました。ここで、私は永遠の DTO 混乱に陥っています。私は、コンストラクターでいくつかのデフォルト値が設定され、その値をリセットするとオブジェクトが「ダーティ」になる、このような慎重にカプセル化されたオブジェクト/プロパティ設定メカニズムによく慣れています。
public class SomeObject
{
private int someValue;
public int SomeValue
{
get { return someValue; }
set
{
someValue = value;
// now SomeObject.IsDirty = true;
}
}
public SomeObject(int someDefaultValue)
{
someValue = someDefaultValue;
}
}
DTO は、この単純な構造に強く反対しているように見えますが、デコレータDataContract
とDataMember
デコレータを介して (しかしわかりません) と思います。ステップスルーすると、スタックに侵入できない呼び出しがいくつか表示されますが、おおよその結果は次のとおりです。
[DataContract]
public class SomeObjectDTO
{
private int someValue;
[DataMember]
public int SomeValue
{
get { return someValue; }
set
{
// apparently the set is getting called by the constructor?
someValue = value;
}
}
public SomeObjectDTO(int someDefaultValue)
{
//apparently no one cares what I want to do here? next line won't fire
someValue = someDefaultValue;
}
}
コンストラクターのパラメーター フローの値が に流れているset
ことはわかりますが、方法がわかりません。また、ユーザー編集プロパティの値と現在からマッパー構築デフォルト値を分離する方法もわかりません。 - サービスに返却する必要があります EDIT.
これは DTO の誤用だと確信していますが、これらの非常に基本的で一般的なケースを処理するための正しい WCF の方法がわかりません。
- プロパティ値のインスタンス化とその編集をどのように分離しますか?
- たとえば、50 個のプロパティを持つオブジェクト/DTO がある場合、ユーザーがそれらのうち 49 個を変更したことをどのように把握し、それらの変更を BLL マザー オブジェクト シップに 1 回で送信するにはどうすればよいでしょうか?