Как EF генерирует прокси-классы
Я играю над созданием механизма рабочего процесса, чтобы обернуть мой сервисный уровень, и хотел бы изучить подход, который использует EF для генерации прозрачных прокси-классов, но я не могу понять из кода на GitHub / CodePlex, как он на самом деле работает,
Может ли кто-нибудь указать мне правильное направление / объяснить процесс?
Это делает это во время выполнения или во время компиляции?
...
Ключевое отличие:
EF интересуется свойствами и отслеживает их изменения, меня интересует обертывание вызовов методов к экземпляру любого типа с некоторой логикой, которая будет вызывать мой механизм рабочего процесса для "вызова события".
1 ответ
Итак, после некоторых размышлений похоже, что он использует шаблоны T4 для экспорта типов во время компиляции, а затем перехватывает, чтобы в основном заменить запрос исходного объекта сгенерированным типом прокси во время выполнения.
Ключевые части кода...
Шаблоны T4 здесь:
http://entityframework.codeplex.com/SourceControl/latest
Код перехвата находится здесь:
http://entityframework.codeplex.com/SourceControl/latest
Короче говоря, должно быть возможно воспроизвести подобное поведение с использованием шаблонов T4 в моем собственном коде, а затем заставить мою фабрику сервисов искать тип прокси с использованием соглашения об именах.
Довольно чистый, слава M$ на этом:)