「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > InotifyPropertyChangedを簡素化:手動で実装する簡単な方法はありますか?

InotifyPropertyChangedを簡素化:手動で実装する簡単な方法はありますか?

2025-04-15に投稿されました
ブラウズ:785

Simplifying INotifyPropertyChanged: Are There Easier Ways Than Manual Implementation?

C#

でのinotifypropertychangedの実装を単純化する

inotifyPropertyChanged はデータ拘束とプロパティの変更通知に不可欠ですが、手動の実装は面倒です。 一方、 {get;セット; notify;} は理想的で、C#に組み込まれていません。 プロセスを合理化する方法を探りましょう。

1つのアプローチには、汎用 setfield メソッドを備えた基本クラスが含まれます。

public class Data : INotifyPropertyChanged
{
    protected virtual void OnPropertyChanged(string propertyName);

    protected bool SetField(ref T field, T value, string propertyName);

    public string Name
    {
        get { return name; }
        set { SetField(ref name, value, "Name"); }
    }
    // ... other properties
}
これにより、プロパティ宣言ボイラープレートが削減されます。 C#5の

callermembername 属性はこれをさらに簡素化します:

protected bool SetField(ref T field, T value, [CallerMemberName] string propertyName = null);

public string Name
{
    get { return name; }
    set { SetField(ref name, value); }
}
C#6以降は、さらに簡潔なコードのために追加の改善を提供します。

自動化コード生成

完全な自動化については、

PropertyChanged.fody などのツールを検討してください。 外部依存関係を必要としますが、マニュアル PropertyChanged イベントを完全に削除します。 これは、大規模なプロジェクトにとって強力なオプションです。 手動最適化(ベースクラスを使用)と自動コード生成の選択は、プロジェクトのサイズと外部依存関係の好みに依存します。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3