2010-08-26 4 views
4

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

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

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

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

+0

Эта проблема применяется к Unity 1.2 – Falcon

ответ

4

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

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

+0

Есть ли способ перехватить существующие ситуации, не делая их клонируемыми? Может быть, создатель настраиваемого объекта? – Falcon

0

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

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

Смежные вопросы