エンティティフレームワークがオブジェクトの変更を追跡する方法(How change tracking works in Entity Framework)と同様の、非常に簡単で重要なオプションのオブジェクト追跡システムを実装しようとしています。オブジェクトのプロパティ変更を暗黙的に検出する
私は他のすべてのオブジェクトが継承する基本クラスを持っています。このクラスには、modifiedという1つのブール値フィールドがあります。これに対する明白な解決策は、セッターがトリガーされたときにmodified = true
に設定するために、他のクラスのすべてのプロパティですべてのセッターを更新することです。この解決策は、ここに詳細に提示されている。Create an event to watch for a change of variable。
私はこれにもっと暗黙の解決策が必要です。私は多くのオブジェクトとたくさんのプロパティを持っています。セッターを更新するのは非常に面倒です。エンティティ・フレームワークが現在の要件には高価すぎるため、エンティティ・フレームワークがどのように機能するかを直接的に模倣したくはありません。 modified == true
をチェックするためにループできるオブジェクトのリストが必要です。これにより、オプションでオブジェクトを追跡し、個々のオブジェクトごとに更新をトリガーすることなく変更があったかどうかを素早く確認することができます。プロパティゲッターとセッターのすべてに対して何らかのリスナーを暗黙的に設定できる方法はありますか?
私はこのコードが存在しないことを知っていますが、.NETはオブジェクトが変更されたかどうかを監視する方法を持っています。
[OnChange=ObjectChanged()] //maybe this way
public class MyClass
{
bool modified {get; set;}
public MyClass() : OnChange(ObjectChanged) //or this way
{
}
private void ObjectChanged()
{
modified = true;
}
}
私が言及したように、私はすべてのセッターを更新したり、エンティティフレームワークが何をコピーしたくないのですか?
[オブジェクトが変更されているかどうかを確認する方法]の複製がありますか?(https://stackoverflow.com/questions/7952616/how-to-check-if-an-object-has-changed) – Adam
@Adamタイトルだけに基づいて重複していることを示唆する前に、質問を読んでください。 –
@DanHastings、またはおそらく正しい答えをあなたの問題に近づけるかどうかを決定するための質問だけでなく、*答えを読んでください。重複は問題が同じでないことを意味します - それは同じ回答になることもあります – Jamiec