Я не думаю, что есть способ сделать это во время выполнения с помощью отражения.Вероятно, вы захотите использовать AOP (аспектно-ориентированный) подход, но он тоже не поддерживается платформой .NET.Вы можете использовать PostSharp , чтобы сделать это, если не возражаете против использования расширения компилятора, или использовать Unity2 для выполнения AOP .
Редактировать: Вы можететакже рассмотрим Castle DynamicProxy .Или, если вы хорошо разбираетесь в DynamicMethods и IL-коде, вы можете создать свой собственный прокси-генератор класса.
Однако, я думаю, что в большинстве случаев вам придется соответствующим образом кодировать оставшуюся часть приложения для обработкипрокси.Другими словами, вместо того, чтобы делать:
Foo f = new Foo();
f.Property1 = 123;
Вы должны сделать что-то вроде:
Foo f = Generator.GetProxy<Foo>(); // this code is fake. just indicates that you need to get an instance of Foo from a proxy generator, be it DynamicProxy or Unity or whatever.
f.Property1 = 123;