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來攔截調用?