相关疑难解决方法(0)

如何使数据绑定类型安全并支持重构

当我希望将控件绑定到我的对象的属性时,我必须提供属性的名称作为字符串.这不是很好,因为:

  1. 如果删除或重命名该属性,我不会收到编译器警告.
  2. 如果使用重构工具重命名该属性,则很可能不会更新数据绑定.
  3. 如果属性的类型错误,我在运行时之前不会收到错误,例如将整数绑定到日期选择器.

是否有一个设计模式可以解决这个问题,但仍然易于使用数据绑定?

(这是WinForm,Asp.net和WPF中的一个问题,很可能是很多其他系统)

我现在已经找到了" C#中的nameof()运算符的变通方法:typesafe databinding ",它也是解决方案的一个很好的起点.

如果您在编译代码后愿意使用后处理器,那么notifypropertyweaver非常值得关注.


当绑定在XML而不是C#中完成时,任何人都知道WPF的良好解决方案吗?

.net c# data-binding refactoring type-safety

69
推荐指数
4
解决办法
2万
查看次数

自动INotifyPropertyChanged

有没有办法自动获得类中属性更改的通知,而无需在每个setter中编写OnPropertyChanged?(如果有更改,我有数百个我想知道的属性).


安东建议使用动态代理.我实际上使用过"Castle"库来获得类似的东西,虽然它确实减少了我必须编写的代码量,但它增加了大约30秒到我的程序启动时间(ymmv) - 因为它是一个运行时方案.

我想知道是否有编译时解决方案,可能使用编译时属性...


Slashene和TcKs给出了产生重复代码的建议 - 遗憾的是,并非所有属性都是m_Value = value的简单情况 - 很多都在setter中有自定义代码,所以来自代码片段和xml的cookie-cutter代码实际上不可行我的项目也是.

c# inotifypropertychanged

57
推荐指数
6
解决办法
3万
查看次数

针对类型安全数据绑定缺少C#中"nameof"运算符的解决方法?

nameof在C#中包含运算符的情绪很多.作为此运算符如何工作的示例,nameof(Customer.Name)将返回字符串"Name".

我有一个域对象.我必须绑定它.然后我需要属性的名称作为字符串.我希望它们是类型安全的.

我记得在.NET 3.5中遇到过一种解决方法,它提供了nameoflambda表达式的功能和涉及的lambda表达式.但是,我无法找到此解决方法.任何人都可以为我提供这种解决方法吗?

我也对nameof如果可能的话在.NET 2.0中实现功能的方法感兴趣.

.net c# data-binding .net-3.5 .net-2.0

44
推荐指数
2
解决办法
2万
查看次数