最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#接口INotifyPropertyChanged使用方法

 更新時間:2022年01月26日 11:11:26   作者:痕跡g  
這篇文章介紹了C#接口INotifyPropertyChanged的使用方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

INotifyPropertyChanged:

該接口包含一個事件, 針對屬性發(fā)生變更時, 執(zhí)行該事件發(fā)生。

    //
    // 摘要:
    //     通知客戶端屬性值已更改。
    public interface INotifyPropertyChanged
    {
        //
        // 摘要:
        //     在屬性值更改時發(fā)生。
        event PropertyChangedEventHandler PropertyChanged;
    }

接下來, 用一個簡單的示例說明其簡單使用方法(大部分常用的做法演示):

1.定義一個ViewModelBase 繼承INotifyPropertyChanged 接口, 添加一個虛函數(shù)用于繼承子類的屬性進行更改通知

2.MainViewModel中兩個屬性, Code,Name 進行了Set更改時候的調(diào)用通知,

     public class ViewModelBase : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void OnPropertyChanged(string propertyName)
        {
            if (this.PropertyChanged != null)
                this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }


    public class MainViewModel : ViewModelBase
    {
        private string name;
        private string code;

        public string Name
        {
            get { return name; }
            set { name = value; OnPropertyChanged("Name"); }
        }

        public string Code
        {
            get { return code; }
            set { code = value; OnPropertyChanged("Code"); }
        }
    }

正如上面的代碼, 應該注意到了, 每個屬性調(diào)用OnPropertyChanged的時候, 都需要傳一個自己的屬性名, 這樣是不是很多余?對, 很多余。

改造

看到有些文章給基類的參數(shù)修改為表達式樹, 這樣實現(xiàn)的時候,傳遞一個Lambda表達式, 我覺得這是不治標不治本嗎?如下:

說明: 原來直接傳遞一個固定的string類型實參, 不說換成lambda的性能問題, 同樣帶來的問題你還是固定的需要去書寫這個參數(shù)。 不建議這么做!

CallerMemberName

該類繼承與 Attribute, 不難看出, 該類屬于定義在方法和屬性上的一種特效類, 實現(xiàn)該特性允許獲取方法調(diào)用方的方法或屬性名稱

    //
    // 摘要:
    //     允許獲取方法調(diào)用方的方法或屬性名稱。
    [AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
    public sealed class CallerMemberNameAttribute : Attribute
    {
        //
        // 摘要:
        //     初始化 System.Runtime.CompilerServices.CallerMemberNameAttribute 類的新實例。
        public CallerMemberNameAttribute();
    }

改造ViewModelBase:

改造之后, 是不是發(fā)現(xiàn)明顯區(qū)別:

不用傳遞參數(shù), 不用書寫lambda表達式, 也不用擔心其傳遞的參數(shù)安全, 直接根據(jù)讀取屬性名!

到此這篇關于C#接口INotifyPropertyChanged使用方法的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • C#解析JSON實例

    C#解析JSON實例

    這篇文章主要介紹了C#解析JSON的方法,主要采用了C#自帶的JavaScriptSerializer類來實現(xiàn),方法簡單實用,需要的朋友可以參考下
    2014-09-09
  • C#生成驗證碼圖片的方法

    C#生成驗證碼圖片的方法

    這篇文章主要為大家詳細介紹了C#生成驗證碼圖片的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • C#中HttpWebRequest的用法詳解

    C#中HttpWebRequest的用法詳解

    這篇文章主要介紹了C#中HttpWebRequest的用法,以實例的形式詳細敘述了HttpWebRequest類中GET與POST的用法,非常具有參考借鑒價值,需要的朋友可以參考下
    2014-11-11
  • Unity快速生成常用文件夾的方法

    Unity快速生成常用文件夾的方法

    這篇文章主要介紹了Unity快速生成常用文件夾的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • Unity?UGUI的Dropdown下拉菜單組件使用詳解

    Unity?UGUI的Dropdown下拉菜單組件使用詳解

    這篇文章主要為大家介紹了Unity?UGUI的Dropdown下拉菜單組件使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • DevExpress實現(xiàn)GridControl顯示Gif動畫的方法

    DevExpress實現(xiàn)GridControl顯示Gif動畫的方法

    這篇文章主要介紹了DevExpress實現(xiàn)GridControl顯示Gif動畫的方法,這是比較實用的方法,需要的朋友可以參考下
    2014-08-08
  • Unity接入百度AI實現(xiàn)通用物體和場景識別

    Unity接入百度AI實現(xiàn)通用物體和場景識別

    這篇文章主要介紹了在Unity中接入百度AI接口,從而實現(xiàn)通用物體和場景的識別,其中接口返回大類及細分類的名稱,并支持獲取識別結果對應的百科信息。感興趣的可以學習一下
    2022-01-01
  • C#中的委托和事件

    C#中的委托和事件

    這篇文章介紹了C#中的委托和事件,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • C#多線程系列之任務基礎(一)

    C#多線程系列之任務基礎(一)

    本文詳細講解了C#多線程的任務基礎,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • C#之Socket操作類實例解析

    C#之Socket操作類實例解析

    這篇文章主要介紹了C#的Socket操作類用法,需要的朋友可以參考下
    2014-08-08

最新評論

乡城县| 长春市| 宝应县| 怀远县| 许昌县| 云安县| 茂名市| 祁连县| 彩票| 平泉县| 海原县| 丰城市| 新昌县| 罗甸县| 广水市| 聊城市| 阿拉善盟| 中超| 栖霞市| 湾仔区| 沂南县| 离岛区| 乡宁县| 界首市| 华容县| 海淀区| 永吉县| 上饶县| 山丹县| 调兵山市| 连平县| 安泽县| 安平县| 运城市| 南京市| 浮梁县| 开封市| 神池县| 安多县| 海南省| 淮南市|