Как работает импорт и экспорт во время выполнения в MEF? - PullRequest
2 голосов
/ 04 января 2011

Я начинаю понимать, что MEF и одна важная вещь в нем заключается в том, что я могу пометить некоторый элемент (класс, свойство, метод) атрибутом Export, чтобы тот, кто когда-либо захочет использовать его, создал атрибут Import для экземпляра varaible ииспользуй это.Как происходит это отображение и когда это происходит?Импорт происходит лениво по требованию или весь состав происходит при запуске?Извините за невежественный вопрос, я пытаюсь понять поток.

1 Ответ

3 голосов
/ 05 января 2011

Это происходит в фазе, называемой «Композиция».Сначала вы создаете контейнер и загружаете в него все возможные источники деталей, а затем вы Compose его.Когда вы создаете композицию, она разрешает все зависимости и выдает исключение, если не может разрешить их все должным образом.

Как правило, ваши детали создаются во время композиции (и если вы устанавливаете точку останова вконструктор ваших классов деталей, вы увидите попадание в точку останова во время вашего звонка на Compose()).Однако вы можете переопределить это простым способом, если вы используете Lazy<T> в качестве типа импорта (при условии, что вы экспортировали свою деталь как тип T).

Чтобы увидеть, как работает композиция, сделайтепосмотрите на Compose() метод здесь .

...