我主要是一名Objective-C/Cocoa开发人员,但我正在尝试在C#.NET中实现观察者模式,具体地模仿NSKeyValueObserving协议和方法。
我已经通过手动支持来模仿NSKVO,如苹果的KVO编程指南所述(请参见http://tinyurl.com/nugolr)。由于我自己编写了setValue:forKey:方法,因此可以通过它们实现自动KVO通知。
但是,我想以某种方式在运行时动态覆盖所有属性上的自动KVO。例如,将Button.Title.set替换为:
set {
this.willChangeValueForKey("title");
title = value;
this.didChangeValueForKey("title");
}
所以,这是我的问题:
如何在运行时动态覆盖C#中的方法或属性?我已经通过使用Reflection.MethodInfo按名称获取和调用方法和属性。另外,我能观察运行时并找出何时将要/已经调用方法吗?