Могу ли я заставить метод работать с MEF до экспорта каких-либо типов? - PullRequest
1 голос
/ 23 марта 2011

Есть ли в MEF способ запустить один из моих методов перед экспортом каких-либо типов?

Я использую MEF в сборке A, а некоторые типы, которые я использую, находятся в другой сборке (B). Сборка B хранится в ресурсах сборки A (часть обфускации кода), поэтому мне нужно обработать событие AppDomain.AssemblyResolve, чтобы я мог загрузить сборку B.

Так что я бы хотел сказать MEF запустить метод X (который будет обрабатывать это событие) перед экспортом любых типов. На данный момент мне нужно добавить код ко всем конструкторам экспортируемых типов и избегать использования любых типов из сборки B в неправильном месте (т. Е. Если они будут разрешены до обработки события AssemblyResolve).

1 Ответ

1 голос
/ 23 марта 2011

Если вы управляете хостом, вы можете запустить код перед тем, как делать какую-либо композицию.

Звучит так, будто вы пытаетесь сделать это в расширении, а хост не знает обфускации,хоть.У MEF нет ничего явно подтверждающего это.Вы можете сделать что-то вроде использования настраиваемого атрибута экспорта для всех своих экспортов и поместить код в конструктор атрибута экспорта, который гарантирует загрузку сборки B.Это идет вразрез с тем, что должны делать атрибуты экспорта - они должны просто предоставлять метаданные, а не запускать код, который что-то делает.Тем не менее, это может работать для вас.

Еще одна вещь, которая меня беспокоит, это то, что в качестве расширения вы подключаетесь к AppDomain.AssemblyResolve.Я думаю, что будет использоваться только один обработчик для события, поэтому, если хост или любые другие расширения хотят подключиться к этому поведению, это не будет работать для всех.

...