Допустим, у меня есть класс, который наследуется от 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; }
}
Я хотел бы автоматически отслеживать как метод получения, так и установщик 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 для перехвата вызовов?