假设我有一个继承自DynamicObject的类:
public class DynamicBase : DynamicObject
{
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
//Yadda yadda yadda
}
//same for TrySetMember
}
public class ChildClass : DynamicBase
{
public void SomeProperty { get; set; }
}
我想自动监视子类中“SomeProperty”的getter和setter。当前,由于子对象中存在某些属性,因此方法不会路由到TryGet/SetMember或DynamicObject的任何其他重写。
var someInstance = new ChildClass();
someInstance.SomeProperty = "someValue" //Monitored somehow in DynamicBase
与创建DynamicBase实例不同,子实例作为类型传递(这就是Moq使用DynamicProxy创建拦截器的方式):
var someInstance = new DynamicBase<ChildClass>();
-
-
如果DynamicObject是错误的基类,我应该选择idynamicmetobjectprovider还是其他什么?
-
如果我需要走DynamicBase的路线,用我正在寻找的组合行为围绕ChildClass创建一个代理,使用DynamicProxy之类的东西拦截调用?