【发布时间】:2009-12-24 04:36:37
【问题描述】:
抱歉,我想不出更好的标题。这是一个由两部分组成的问题,只有放在一起才有意义。
假设我有一个这样的构造函数
public Fact(INotifyPropertyChanged observable, Func<bool> predicate)
{
this.predicate = predicate;
observable.PropertyChanged += (sender, args) =>
PropertyChanged(this, new PropertyChangedEventArgs("Value"));
}
这就是它的使用方式
new Fact(Model.AllowEditing, () => Model.AllowEditing);
其中 AllowEditing 是一种 INotifyPropertyChanged
我想将构造函数重构为
public Fact(Expression<Func<bool>> expression)
所以可以这样调用
new Fact(() => Model.AllowEditing);
问题是如何解析该表达式以从表达式树中获取“可观察”然后订阅其事件?
上面的代码不是我的,它来自 Ayende 最近的一个例子,如果有人想看看 Fact 类是如何被使用的,这里是完整的源代码http://github.com/ayende/Effectus
【问题讨论】:
标签: .net events expression-trees