У меня есть сценарий, в котором я использую динамический прокси-сервер замка, чтобы иметь возможность перехватывать и регистрировать вызовы сообщений для любого заданного класса (назовем его целевым классом). Я делаю это, заключая целевой класс в класс, который создает прокси класса с перехватчиком, который регистрирует все вызовы методов целевого класса. Это прекрасно работает. Единственная проблема заключается в том, что для этого все общедоступные методы целевого класса должны быть виртуальными, что по многим причинам нежелательно.
Я мог бы создать решение, в котором я проверяю, что все методы являются виртуальными, когда я создаю прокси-сервер, и выдает исключение, если это не так, но я бы предпочел, чтобы можно было изменить методы, чтобы они были виртуальными, используя отражение (или что-то еще ) перед созданием прокси. Таким образом, я смогу использовать во всех классах, не обращая внимания на то, есть ли у них виртуальные методы или нет.
Что мне здесь не хватает, могу ли я это как-то заархивировать?