ホームページ > バックエンド開発 > C++ > C# でプロパティ値が変更されたときにカスタム イベントを発生させる方法は?

C# でプロパティ値が変更されたときにカスタム イベントを発生させる方法は?

Linda Hamilton
リリース: 2025-01-01 01:16:10
オリジナル
988 人が閲覧しました

How to Raise a Custom Event When a Property Value Changes in C#?

プロパティの値が変更されたときにイベントを発生させる方法

ImageFullPath1 という名前のプロパティがあります。値が変更されるたびにイベントを発生させます。 INotifyPropertyChanged インターフェイスを使用していることはわかっていますが、この目的にはイベントを利用したいと考えています。

INotifyPropertyChanged インターフェイスは、実際にはイベントとともに実装されています。これには、コンシューマがサブスクライブできるイベントである PropertyChanged という単一のメンバーがあります。

安全な実装:

次のコードスニペットは、追加のイベントを備えた INotifyPropertyChanged インターフェイスの安全な実装を示しています。特定のプロパティ (ImageFullPath):

public class MyClass : INotifyPropertyChanged
{
    private string imageFullPath;

    protected void OnPropertyChanged(PropertyChangedEventArgs e)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
            handler(this, e);
    }

    protected void OnPropertyChanged(string propertyName)
    {
        OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
    }

    public string ImageFullPath
    {
        get { return imageFullPath; }
        set
        {
            if (value != imageFullPath)
            {
                imageFullPath = value;
                OnPropertyChanged("ImageFullPath");
            }
        }
    }

    protected void OnImageFullPathChanged(EventArgs e)
    {
        EventHandler handler = ImageFullPathChanged;
        if (handler != null)
            handler(this, e);
    }

    public event PropertyChangedEventHandler PropertyChanged;
    public event EventHandler ImageFullPathChanged;
}
ログイン後にコピー

この実装により、次のことが保証されます:

  • 他のプロパティに簡単に適用できる抽象的なプロパティ変更通知メソッド
  • コピー競合状態を避けるために、PropertyChanged デリゲートを呼び出す前に
  • の正しい実装INotifyPropertyChanged インターフェイス

.NET 4.5 の CallerMemberAttribute:

.NET 4.5 以降の場合、CallerMemberAttributeを排除するために使用できますソース コード内のプロパティ名のハードコーディングされた文字列:

protected void OnPropertyChanged(
    [System.Runtime.CompilerServices.CallerMemberName] string propertyName = "")
{
    OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}

public string ImageFullPath
{
    get { return imageFullPath; }
    set
    {
        if (value != imageFullPath)
        {
            imageFullPath = value;
            OnPropertyChanged();
        }
    }
}
ログイン後にコピー

以上がC# でプロパティ値が変更されたときにカスタム イベントを発生させる方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート