Поиск цели прокси-объекта LinFu - PullRequest
1 голос
/ 21 февраля 2010

Это в значительной степени дублирующий вопрос, но вместо использования Castle Dynamic Proxy я использую LinFu Получение базового типа объекта прокси

Я использую automapper для создания прокси интерфейсов, которые отправляю своей модели представления в Asp.net MVC. Моя проблема в том, что я могу сказать, что MetadataProvider по умолчанию MVC находит свойства и метаданные, вызывая .GetType () в модели.

Итак, что происходит, шаблоны EditorFor () и DisplayFor () не генерируют никаких полей. Что мне нужно сделать, это найти тип цели прокси и затем сгенерировать мои шаблоны. Я знаю, что могу просто разобрать имя и использовать GetType ("thename"), но мне было интересно, есть ли простой способ.

Ответы [ 2 ]

1 голос
/ 01 марта 2010

LinFu.DynamicProxy не предоставляет прямого доступа к объекту прокси. Он просто перенаправляет каждый вызов метода в экземпляр реализации IInterceptor. Чтобы получить доступ к базовому объекту, вам нужно выяснить, действительно ли текущий экземпляр-перехватчик имеет экземпляр целевого класса или нет.

Если вы работаете с AutoMapper, AFAIK, они используют LinFu.DynamicObject для выполнения большого количества записи утки, и вызов GetType () для динамического типа, сгенерированного LinFu.DynamicObject, даже не даст вам фактический тип в модели вашего домена - он просто получит вам объект, который был буквально прикреплен лентой непосредственно самим LinFu.

0 голосов
/ 22 февраля 2010

получите последнюю версию AutoMapper - она ​​использует Castle Dynamic Proxy, и вы уже знаете, как получить это оттуда:)

...