3
假设我有一个继承自DynamicObject的类:在处理从DynamicObject继承的子类时,监视非动态方法调用
public class DynamicBase : DynamicObject
{
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
//Yadda yadda yadda
}
//same for TrySetMember
}
然后我有一个继承自DynamicBase的子类:
public class ChildClass : DynamicBase
{
public void SomeProperty { get; set; }
}
我想监视getter和setter子类中的“SomeProperty”自动生成。目前,由于子项中存在SomeProperty,因此方法不会路由到TryGet/SetMember或任何其他DynamicObject的重写。
理想情况下,我希望在基类用户实例化对象后执行此操作,如下所示:
var someInstance = new ChildClass();
someInstance.SomeProperty = "someValue" //Monitored somehow in DynamicBase
,而不必创建DynamicBase实例,子项作为类型传递(这就是Moq使用DynamicProxy创建拦截器的方式):
var someInstance = new DynamicBase<ChildClass>();
我想知道:
- 这对C#来说甚至可能吗?
- 如果DynamicObject是错误的基类;我应该下载到IDynamicMetaObjectProvider或其他什么?
- 如果我需要采用DynamicBase的路由来创建一个围绕ChildClass的代理,我正在寻找组合的行为,使用类似DynamicProxy来拦截调用?