.net AOP如何帮助数据绑定?
我最近读了一篇关于安德斯·海尔斯伯格反对AOP论点的文章 第一个反论点提到数据绑定: 谬论1。“面向方面的编程对于代码的调试和指令插入很有意思,不是一门成熟的编程学科。” 真相1。安德斯可能只是停留在“你好,世界”的例子上 尽管代码插装无疑是AOP的一个重要用例,并且是您在每个“入门”文档中都会看到的用例,但当涉及到实现任何非平凡的实际应用程序时,该技术大大简化了开发人员的工作。仅举几个AOP真正有帮助的现实场景:.net AOP如何帮助数据绑定?,.net,data-binding,aop,.net,Data Binding,Aop,我最近读了一篇关于安德斯·海尔斯伯格反对AOP论点的文章 第一个反论点提到数据绑定: 谬论1。“面向方面的编程对于代码的调试和指令插入很有意思,不是一门成熟的编程学科。” 真相1。安德斯可能只是停留在“你好,世界”的例子上 尽管代码插装无疑是AOP的一个重要用例,并且是您在每个“入门”文档中都会看到的用例,但当涉及到实现任何非平凡的实际应用程序时,该技术大大简化了开发人员的工作。仅举几个AOP真正有帮助的现实场景: 我试图思考在数据绑定场景中如何使用AOP。我一直认为绑定依赖于反射来完成它是“神
我试图思考在数据绑定场景中如何使用AOP。我一直认为绑定依赖于反射来完成它是“神奇的”。我非常确定绑定场景中所需的一切都可以通过反射实现。AOP是否用于(轻微的)性能提升?他指的不是数据绑定,而是AOP真正闪耀的
INotifyPropertyChanged
(以及类似的)部分
当前,当类实现INotifyPropertyChanged时,属性如下所示:
private bool _isSomeProperty;
public bool IsSomeProperty
{
get{ return _isSomeProperty;}
set
{
if( value != _isSomeProperty)
{
_isSomeProperty = value;
OnNotifyPropertyChanged( "IsSomeProperty");
}
}
}
如果有像样的AOP,它们可能看起来像这样
[NotifyOnChange]
public bool IsSomeProperty {get; set;}
使可读性大为不同,特别是当一对属性的setter中有一些实际规则时
即使使用泛型基类、表达式、反射和一些棘手的实现,您最好希望:
private bool _isSomeProperty;
public bool IsSomeProperty
{
get{ return _isSomeProperty;}
set
{
SetAndNotify( x=>x.IsSomeProperty)
}
}
即使这样,也没有那么可读(而且性能也不太好)很好的答案。我不太使用WPF编写代码,所以当我想到数据绑定时,我想到ASP.NET,我想到的是一种只读方式(在这种方式中,反射是非常好的)。谢谢
private bool _isSomeProperty;
public bool IsSomeProperty
{
get{ return _isSomeProperty;}
set
{
SetAndNotify( x=>x.IsSomeProperty)
}
}