这是关于数据绑定,假设我有一个绑定到我的UI的对象,我想隐藏基于对象的其他属性显示它.我可以为IsVisible或Visibility添加扩展属性,并将该属性绑定到UI.
您无法绑定扩展方法,但能够将数据绑定的属性添加到您无法扩展的现有类型可能非常有用.
在我的书中,扩展属性的第一个最重要的原因是围绕无主代码实现了流畅的接口模式.我在NHibernate会话周围构建了一个包装器,使其更具有本构性,因此我可以做类似的逻辑
public bool IsInTransaction
{
get { return _session.Is().Not.Null && _session.Is().InTransaction; }
}
Run Code Online (Sandbox Code Playgroud)
这看起来非常愚蠢是必须是一个方法,因为除非我直接修改会话对象上的源,否则我无法将Is作为属性插入.