这篇文章主要介绍“C#如何实现INotifyPropertyChanged接口”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C#如何实现INotifyPropertyChanged接口”文章能帮助大家解决问题。INotifyPropertyChanged接口在WPF或WinFrom程序中使用还是经常用到,常用于通知界面属性变更。标准写法如下:这种写法的两个问题是对属性名使用了字符串硬编码,容易写错,也不方便重构冗余代码,如果属性较多的时候写得想吐我在博客文章使用CallerMemberName简化InotifyPropertyChanged的实现中介绍了通过Caller Information解决属性名称字符串硬编码的问题。但是仍然不能解决冗余代码的问题。对于第二个问题,往往是通过AOP的方式实现,一般的实现方式有两种:通过代理对象封装通过编译期间代码注入的方式实现我增在项目中使用过DynamicObject封装来实现过,主要原理是用实现一个PocoNotifyWrapper的DynamicObject类,托管其属性的读写动作,并附加IntofyPropertyChanged接口实现。这种方式是动态的AOP了,是一个通用的方式,并且扩展性比较器,可以通过继承PocoNotifyWrapper来实现多态。用它做ViewMode层还是比较方便。不过一个不大好的地方是DynamicObject是丢失了属性类型信息的,有时绑定时会出错(如将一个Text免费云主机域名Box的Text绑定到一个封装后的Int类型对象时会不进行自动类型转换)。要解决它还需要实现一些其它的接口,实现起来还是有些复杂的,并且项目进度比较紧张,没有太多时间来完善它。另外一种方式是通过编译期间代码注入方式来实现:最开始见的是PostSharp的一个实现:http://doc.postsharp.net/inotifypropertychanged-add。不过PostSharp是收费的,后来也逐渐由了许多其它的免费的解决方案。本文这里介绍的是一个开源的解决方案:Fody。使用它非常简单,首先通过Nuget安装库:PM> Install-Package PropertyChanged.Fody
。然后在需要实现属性通知的类上加一个[ImplementPropertyChanged]即可:编译后生成的代码如下:基本上对代码没有注入,不需要安装插件,也不影响调试,实现非常简单,非常方便。需要注意的是,如果实现了INotifyPropertyChanged接口,即使没有[ImplementPropertyChanged]标记,默认也会注入。关于“C#如何实现INotifyPropertyChanged接口”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注百云主机行业资讯频道,小编每天都会为大家更新不同的知识点。
相关推荐: MyBatisPlus怎么实现条件查询的三种格式
今天小编给大家分享一下MyBatisPlus怎么实现条件查询的三种格式的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下免费云主机域名,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。常规格式即创建…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。