C# 处理从DynamicObject继承的子类时监视非动态方法调用
假设我有一个继承自DynamicObject的类:C# 处理从DynamicObject继承的子类时监视非动态方法调用,c#,.net,oop,dynamic,C#,.net,Oop,Dynamic,假设我有一个继承自DynamicObject的类: public class DynamicBase : DynamicObject { public override bool TryGetMember(GetMemberBinder binder, out object result) { //Yadda yadda yadda } //same for TrySetMember } 然后我有一个子类继承自DynamicBase: public
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; }
}
我想自动监视子类中“SomeProperty”的getter和setter。目前,由于子对象中存在SomeProperty,因此不会将方法路由到TryGet/SetMember或DynamicObject的任何其他重写
理想情况下,在基类的用户实例化对象之后,我希望出现这种行为,如下所示:
var someInstance = new ChildClass();
someInstance.SomeProperty = "someValue" //Monitored somehow in DynamicBase
与必须创建DynamicBase实例不同,子对象作为类型传递(这就是Moq使用DynamicProxy创建拦截器的方式):
var someInstance=newdynamicbase();
我想知道:
这在4.0中添加了
动态基础结构时是不可能的。简单地实现IDynamicMetaObjectProvider
并不意味着您的类可以完全否决.NET的类型/成员解析。这仅仅意味着,当在动态上下文中引用实例时,无法以静态方式解析的调用将返回到动态提供程序
var someInstance = new DynamicBase<ChildClass>();