是否应将扩展属性添加到C#4.0?

Dav*_*cia 17 c#

我希望这能用于流畅的界面.见,例如这个 Channel9的讨论.可能还需要添加索引属性.

你的想法是什么?优势会超过"语言混乱"吗?

Ben*_*ein 29

由于属性只是方法的语法糖,我不明白为什么C#应该有没有扩展属性的扩展方法.


Nic*_*ick 9

这是关于数据绑定,假设我有一个绑定到我的UI的对象,我想隐藏基于对象的其他属性显示它.我可以为IsVisible或Visibility添加扩展属性,并将该属性绑定到UI.

您无法绑定扩展方法,但能够将数据绑定的属性添加到您无法扩展的现有类型可能非常有用.


Chr*_*sic 6

在我的书中,扩展属性的第一个最重要的原因是围绕无主代码实现了流畅的接口模式.我在NHibernate会话周围构建了一个包装器,使其更具有本构性,因此我可以做类似的逻辑

public bool IsInTransaction
{
    get { return _session.Is().Not.Null && _session.Is().InTransaction; }
}
Run Code Online (Sandbox Code Playgroud)

这看起来非常愚蠢是必须是一个方法,因为除非我直接修改会话对象上的源,否则我无法将Is作为属性插入.