Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何避免手动实现INotifyPropertyChanged

如何避免手动实现INotifyPropertyChanged
EN

Stack Overflow用户
提问于 2010-06-28 06:37:27
回答 8查看 1.7K关注 0票数 8

有没有办法避免这种情况。我有很多绑定到DataGridViews的类,它们只是带有默认getter和setter的属性的简单集合。所以这些类非常简单。现在我需要为它们实现INotifyPropertyChanged接口,这将大大增加代码量。有没有什么类可以让我继承来避免写这些无聊的代码呢?我想象我可以从某个类继承我的类,并用一些属性来装饰属性,然后它就会变魔术了。这有可能吗?

我很清楚面向方面的编程,但我更喜欢用面向对象的方式。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-06-28 06:44:02

创建容器基类,例如:

代码语言:javascript
运行
AI代码解释
复制
abstract class Container : INotifyPropertyChanged
{
  Dictionary<string, object> values;

  protected object this[string name]
  {
    get {return values[name]; }
    set 
    { 
      values[name] = value;
      PropertyChanged(this, new PropertyChangedEventArgs(name));
    }
  }
}

class Foo : Container
{
  public int Bar 
  {
    {get {return (int) this["Bar"]; }}
    {set { this["Bar"] = value; } }
  }
}

注意:非常简化的代码

票数 5
EN

Stack Overflow用户

发布于 2010-06-28 06:43:23

这取决于;您可以使用PostSharp来编写这样的属性,该属性由编织者重写;但是,我可能会尝试手动执行此操作-也许使用处理数据更新的通用方法,例如

代码语言:javascript
运行
AI代码解释
复制
private string name;
public string Name {
    get { return name; }
    set { Notify.SetField(ref name, value, PropertyChanged, this, "Name"); }
}

通过以下方式:

代码语言:javascript
运行
AI代码解释
复制
public static class Notify {
    public static bool SetField<T>(ref T field, T value,
         PropertyChangedEventHandler handler, object sender, string propertyName)
    {
        if(!EqualityComparer<T>.Default.Equals(field,value)) {
            field = value;
            if(handler!=null) {
                handler(sender, new PropertyChangedEventArgs(propertyName));
            }
            return true;
        }
        return false;
    }
}
票数 9
EN

Stack Overflow用户

发布于 2010-06-28 07:26:05

如果没有AOP,我认为没有一种简单的方法可以将其改造到现有的类中。不管你怎么做,你至少要改变你所有的属性。

我使用一个继承INotifyPropertyChanged的基类和一个OnPropertyChanged(string propertyName)方法来触发事件。然后,我使用Visual Studio代码片段来创建在属性设置器中自动调用OnPropertyChanged的属性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3130491

复制
相关文章
查看Mac上已连接WiFi的密码?
在其左侧的“钥匙串”列表中选择“系统”,右侧栏就会出现与系统有关的各类密钥。
JavaEdge
2022/04/23
1.8K0
查看Mac上已连接WiFi的密码?
Android的Wifi连接
最近在做Wifi连接的功能,在网上查找了很多资料,可用的也比较少,最后遇到很多了问题,一路走来也解决了很多问题,特此记录。
None_Ling
2019/10/29
2.7K0
WiFi频段_wifi工作频段
2.4G->2.4GHz ~ 2.4835GHz 共83.5 MHz 的资源, 我们频道的划分是以5Mhz 为一个channel 资源。
全栈程序员站长
2022/11/01
2.4K0
WiFi频段_wifi工作频段
代码实现WIFI自动连接与连接指定WIFI源码
最近家里老人总是问我如何连接WIFI,和他们电话讲又讲不清楚,于是我想到了写一个,打开自动连接指定WIFI的软件。练练手。 废话不多说,首先布局,简单! 两个文本框一个按钮 <?xml versi
对话、
2022/02/22
3.7K0
查看已连接网络的传输控制协议/因特网互联协议。
1、点击[打开] 2、点击[确定] 3、点击[网络和共享中心] 4、点击[WLAN] 5、点击[属性]
裴来凡
2022/05/28
7010
查看已连接网络的传输控制协议/因特网互联协议。
使用Python的wifi模块连接到您的WiFi
通常我们无法连接到 WiFi,或者在我们的 GUI 上无法发现它。这通常发生在无法自行检测WiFi的Linux系统的新设置上。
很酷的站长
2023/08/11
6690
使用Python的wifi模块连接到您的WiFi
你说你懂互联网,那这些你知道么?
今天的因特网无疑是有史以来由人类创造的、精心设计的最大系统、该系统由数以千计的计算机设备(计算机、平板电脑、智能手机)彼此相互连接构成,并且还有一批与因特网相互连接的物品比如游戏机、监控系统、汽车、医疗设备、智能眼镜、手表、运动手环等,随着5G时代的到来,万物互联也越来越称为可能,这里推荐一下 尤瓦尔·赫拉利 的《未来简史》,这个人的格局很高,他书中描述的未来也越来越成为现实,他写的文字能让你感觉到你更想变为计算机世界里的一片硅片。
cxuan
2019/12/18
1.2K0
如何平衡工作与家庭
  可能刚踏入职场的小伙伴们感受不深,毕竟初出茅庐敢闯敢拼没有包袱。但是随着工作年限的增加,开始成家、父母渐老,不自觉地肩上的担子越来越重,这时候其实会面临一个难题,就是自己每天一共24个小时,如何去合理的划分时间在工作和家庭之中。我想这个问题应该有不少“职场老人”深有感触吧。
Zachary_ZF
2018/09/10
4620
如何平衡工作与家庭
python 连接wifi脚本
//pip install pywifi import pywifi,time from pywifi import const import subprocess
用户5760343
2022/05/14
1.3K0
树莓派命令连接wifi_树莓派如何连接WIFI
大家好,又见面了,我是你们的朋友全栈君。 hello,大家好,我是叶秋! 上一期呢,给大家介绍了如何给树莓派安装系统,有细心的朋友就会发现上一期安装系统的文章漏了一点点知识,不知道机智的你是否有发现呢~~(尴尬😅)下次一定注意。。😂 在第五步 使用putty 连接树莓派的时候,是使用的ssh 连接的,所以呢树莓派一定要开启ssh,树莓派开启ssh也很简单,就是写完系统以后,直接在根目录新建一个文件,改名ssh 然后删掉后缀名 就OK啦,记住一定要删除.txt 后缀!然后就可以用putty连接了。是不是很简单
全栈程序员站长
2022/06/30
1.5K0
树莓派命令连接wifi_树莓派如何连接WIFI
快速配置无线模块连入家庭Wifi
近日玩了下microchip的无线wifi模块,配置相当简单,可以与单片机进行串口连接,今天分享给大家 如何快速配置这款模块,使其可以连入家庭Wifi 拿到任何一个模块首先恢复工厂设置,配置到自己的网
用户1605515
2018/04/11
1.9K0
快速配置无线模块连入家庭Wifi
树莓派连接WiFi[通俗易懂]
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
全栈程序员站长
2022/07/02
1.1K0
VBA获取连接的wifi密码
经常碰到这种情况:自己家里设置了wifi密码,电脑手机连接后,过段时间很容易忘记,有时候朋友过来问起来就要回忆半天!
xyj
2021/03/03
1.5K0
VBA获取连接的wifi密码
朋友问我:电脑连接不上WIFI,显示无法连接到这个网络,怎么解决?
文章目录 不废话,上教程: 连接成功
川川菜鸟
2021/10/19
3.8K0
可连接的冰箱锚点IoT家庭?
一定要保证鸡尾酒会吹牛的权利,但智能冰箱真的有多么变化? 最新的物联智能(IoT)Tracker™与三星电子美国高级副总裁Yoon Lee一起挖掘出AI嵌入式电器。 李认为,智能冰箱成为“新厨房生活方
架构师研究会
2018/04/09
1.7K0
可连接的冰箱锚点IoT家庭?
树莓派连接WiFi连不上[通俗易懂]
开启了ssh服务,同时创建了wpa_supplicant.conf文件,但仍旧连不上Wifi。
全栈程序员站长
2022/07/01
6.7K0
树莓派连接WiFi连不上[通俗易懂]
ESP8266WiFi连接
程序烧写时,会使用到TXD0\RXD0\GPIO0 三个引脚,如需使用,请烧写完成后,再连接外设使用。
云深无际
2021/02/23
2.1K0
ESP8266WiFi连接
树莓派连接wifi教程[通俗易懂]
第一种方法: 如果你已经连接了VNC图形界面,就像手机电脑一样点击wifi的图标找到你的wifi输入密码就行
全栈程序员站长
2022/08/11
3.9K0
在linux中连接wifi
在Linux中连接WiFi的步骤:1. 进入终端获取管理员权限,2. 查看可用的无线网卡,记下网卡名称,3. 查看网卡的激活状态,4. 激活网卡,5. 查看网卡激活状态,6. 搜索附近可用的无线网络,7. 如果存在可用的无线网络,8. 为网卡分配IP地址,9. 等待片刻,10. 测试网络连接状态。
CN_Simo
2017/12/26
6K0
在linux中连接wifi
树莓派 网络设置_树莓派4b教程
对于大多数的家庭网络来说,你就不需要再做任何进一步的配置了。但为了保证正常工作,你的路由器必须打开DHCP(Dynamic Host Configuration Protocal)配置。这个服务运行在你的路由器上,它会给任何通过网线或者WiFi连接到路由器上的设备分发IP地址。
全栈程序员站长
2022/09/30
3K0
树莓派 网络设置_树莓派4b教程

相似问题

从android密钥码到java密钥码

22

从CKEditor的扫描码中获取密钥

10

使用shiftkey键获取密钥码

30

密钥码13和密钥码10不工作

11

Javascript密钥码

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档