私は、単一の親から派生したオブジェクトの大規模なファミリーを持っています。オブジェクトはすべて変更されたかどうかを知る方法を知っていますが、オブジェクトの新しいインスタンスが既にメモリにあるものと比較して変更されているかどうかを確認できる必要もあります (他の誰かがデータベースを更新したかどうかをテストする)オブジェクトが編集されている間。)
その結果、すべての子クラスに同じメソッドを含める必要があります。
public new bool Changed()
{
return Changed(this);
}
これは本当に私の爪に固執しますが、実際の作業は、それが含まれるクラスと同じ型のパラメーターを取る関数によって実行される必要があるため、回避する方法がわかりません。したがって、仮想にすることはできません。(確かに、親を取得して毎回キャストするように定義することもできますが、その場合、比較関数は正しいオブジェクトだけでなく、ツリー内の任意のオブジェクトを受け入れるようになり、インスタンスごとにガード コードが必要になります。これも醜いものです。)
もちろんこれは機能しますが、醜いコードは嫌いです。
更新:Changed
関数に関しては、各オブジェクトは、読み込まれたときにその状態のコピーを保持します。