Вход в приложение winform с использованием AOP и прокси - PullRequest
1 голос
/ 04 марта 2012

Давайте перейдем к деталям.

Например, у меня есть класс и логика с именем ImportAction.Этот класс имеет несколько открытых и закрытых методов.Я призываю некоторые методы.В этих методах я создаю экземпляры других классов (пропустите комментарии DI, пожалуйста, это унаследовано :) и вызываю некоторые из них (и так далее).Также у меня есть несколько закрытых полей в обоих классах и некоторые возвращаемые значения из вызова.

Мне нужно записать все конкретные значения, которые я выберу из всех участников.

Я читал об АОП и хочу использовать Unity Interception для перехвата вызовов.Но я не знаю, возможно ли получить приватное состояние метода / класса.

Я понимаю, что мне нужен прокси для всех используемых типов во время выполнения ImportAction.Но мне также нужны их частные поля и возвращаемые значения.

Это хороший подход для реализации этого?Может быть, это невозможно с прокси единства?Все идеи приветствуются.

1 Ответ

0 голосов
/ 05 марта 2012

Unity не предоставит вам прямой доступ к частному состоянию (кроме как с помощью рефлексии).

Однако есть и другие вопросы.Строго говоря, вы не можете использовать прокси, если создаете класс напрямую, используя new.Вы можете вручную изменить код для создания прокси, но если вы это сделаете, то почему бы просто не записать необходимую информацию?Особенно учитывая, что потребность в приватном состоянии, по-видимому, подразумевает, что журналирование в любом случае тесно связано с этими классами.

Однако, если вы специально хотите отделить код журналирования от классов, использующих AOP, то вы все равно должны сделать это, используянекоторые альтернативные AOP-подходы, связанные с переписыванием кода / IL, например Afterthought, PostSharp или ручная обработка с NRefactory или подобной вещью.

...