InotifyPropertyChangedは、データバインディングシナリオで使用される基本的なインターフェイスであるため、属性が変更されたときにクラスにサブスクライブコンポーネントに通知できます。 Microsoftの実装には、各属性のプロパティ変更イベントが含まれますが、開発者はしばしばより効果的な方法を求めています。 一部の人々は、Microsoftが自動属性と同様に、単純化されたInotifyPropertyChaanged実装メカニズムを提供することを示唆しています。ただし、この方法は、継承、スレッド、イベントサブスクリプションに関連する潜在的な複雑さをもたらす可能性があります。
モデルコードのカスタマイズを達成するための
ビルドされたソリューションがない場合、開発者はモデルコードを使用してさまざまなカスタム実装を設計しました。一般的な方法は、イベント処理プログラム(PropertyChangedEventHandler)を含む基本クラスと、イベントを引き起こすために使用されるベースクラスを定義することです。各属性は、設定時にonpropertychangedと呼ばれ、属性名はパラメーターとして渡されます。
この方法は、特に多くの属性を持つクラスで、面倒で簡単に間違いを犯す可能性がある各属性の個別のコード行を記述する必要があります。
幸いなことに、C#は、inotifypropertychangedを簡素化する言語特性を提供するために開発されました。 callermembernamettributeを使用すると、属性が独自の名前を自動的に決定できます。これにより、属性名をパラメーターとしてOnpropertyChangedに渡す必要性がなくなります。
さらに、C#6.0は空の条件付き演算子を導入し、プロパティチェンジが空でない場合に単純に呼び出すことができます。 C#7は、ラムダの表現を通じてこの文法をさらに強化し、コードの読み取りを容易にします。c#8と上位バージョンの最新の改善
C#8は、より正確なタイプの注釈とより安全なコードを可能にする真空参照タイプを導入します。さらに、表現の主なメンバーの文法により、実装がさらに簡素化されました。
要するに、Microsoftは「高速」InotifyPropertyChanged実装方法を認識していませんでしたが、開発者はモデルコードを使用し、C#言語特性を使用して創造的なソリューションを見つけました。これらの技術は時間の経過とともに開発されており、データバインディングに不可欠なこのインターフェイスを実現するためのより効果的で簡潔な方法を提供しています。以上がC#にInotifyPropertyChangedを実装するより良い方法はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。