Я не думаю, что есть способ сделать это во время исполнения с отражением. То, что вы, вероятно, захотите сделать, это использовать AOP (аспектно-ориентированный) подход, но это тоже не поддерживается платформой .NET. Вы можете использовать PostSharp, чтобы сделать это, если вы не возражаете использовать расширение компилятора, или посмотрите на использование Unity2 to do 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;
Разве это не то, что предложили @ rally25rs? –
Почти. Я не совсем понял, как работать с DynamicProxy, но мне помог EasyProp. – dublicator