Microsoft Unity: перехват не работает при использовании BuildUp вместо Resolve - PullRequest
4 голосов
/ 26 августа 2010

Я использую Microsoft Unity 2.0, и расширение для перехвата не работает должным образом.

Рассмотрим эти две строки кода:

MyUnityContainer.Configure<Interception>().SetDefaultInterceptorFor<MyType>(new VirtualMethodInterceptor());
var someObject = MyUnityContainer.BuildUp<MyType>(anObject);

Эти две строки не дают вам динамический прокси, который вы ожидаете для некоторого объекта! Как можно заставить перехват работать по такому сценарию?

Ответы [ 2 ]

4 голосов
/ 26 августа 2010

На этой странице объясняется, что вы не можете использовать виртуальный перехват с использованием BuildUp, поскольку он может применяться только при создании объекта (поскольку динамически генерируется подкласс целевого объекта):

Перехват происходит только на виртуальных методах.Вы должны установить перехват во время создания объекта и не можете перехватить существующий объект.

0 голосов
/ 26 августа 2010

VirtualMethodInterceptor работает только на новых объектах.Вместо этого вы могли бы использовать перехватчики Interface или TransparentProxy для перехвата существующего экземпляра (так как они используют явные прокси-объекты).

Я мог бы видеть добавление VirtualMethodProxyInterceptor, но я ожидаю, что это вызовет больше путаницы, чем помощи.

...