私はautopropertiesとビジネスクラスの束を持っています。 、私はこのようなフィールド+プロパティにすべてのプロパティを変換する必要があり、この目標を達成するためにフィールドとgetter/setterプロパティに対するC#の自動プロパティをリファクタリングしますか?アプリケーションが進化する</p> <pre><code>public class A { public int Id { get; set; } public string Title { get; set;} } </code></pre> <p>ので、データのみを変更バッキングストアに送信するためには、プロパティの変更を追跡可能にするための新しい要件がある:
:
public class A {
private int m_Id;
public int Id {
get { return m_Id; }
set {
if(m_Id != value){
SetChanged("Id");
m_Id = value;
}
}
}
private string m_Title;
public string Title
{
get { return m_Title; }
set {
if(m_Title != value){
SetChanged("Title");
m_Title = value;
}
}
}
protecte void SetChanged(string propertyName) {
// Not important here
}
}
迅速手動でプロパティを変更することを避けるために自分のコードをリファクタリングする方法はありますか?
すべてのビジネスクラスが単純に自動作成機能を持つクラスであれば、私は[T4 templates](http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx)を使用してクラスを生成します。それで、上記のようにすべてを再フォーマットするのは簡単な変更です。 – mellamokb
Regexの置き換えはうまくいくかもしれません - Resharperもこのようなことがありますが、おそらく順番にそれぞれを行う必要があります。また、CodeSmithテンプレートは、それを使用する方法を知っていることを前提に、時間外にそれを並べ替えるでしょう。それ以外の場合は、適切な構造を持ち、プロパティを再実行するコードスニペットを作成します。コードスニペットは私が想定しているすべてのビットを埋めるでしょうが、それはまだ手作業です!私は正規表現のために行くだろう...またはmellamokbが言うように、T4のテンプレートは、私は単純なもののために彼らと良い成功を収めてきた – Charleh
Resharperを使用していますか?そうであれば、それはショートカットであり、誰かが自動的にINotifyPropertyChangedサポートを追加するように拡張しています:https://bitbucket.org/tgmayfield/resharper.tgmcontrib –