В MEF, как оценивается цепочка зависимостей экспорта-импорта? - PullRequest
1 голос
/ 30 января 2011

Я столкнулся с проблемой, когда у меня есть App1.ClassA, импортирующий App2.ClassB, который сам должен импортировать App2.ClassC в свойстве.App1 и App2 - это 2 разных xaps

App1.ClassA вызывает ComponentInitializer.SatisfyImports (this) в своем коде инициализации.Однако эта цепочка удовлетворительного импорта, похоже, не распространяется по всем сборкам.

Я не могу указать ComponentInitializer для ClassB, поскольку он сам экспортируется (а MEF выдает ошибку).свойство ClassB без этого вызова.

Это ожидаемое поведение или я вижу какую-то другую ошибку, из-за которой ClassC не загружается?

Я прошел этот пост - http://forums.silverlight.net/forums/t/202811.aspx,, норазница может быть в том, что я пересекаю Xaps в моем сценарии

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 31 января 2011

Я пересекаю Xaps в моем сценарии

По умолчанию ComponentInitializer будет искать только детали в текущей XAP . Вы можете переопределить эту конфигурацию хоста по умолчанию , вызвав CompositionHost.Initialize.

0 голосов
/ 31 января 2011

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

Ошибка, которую я сделал, заключалась в том, что импорт не был решен во время создания класса (поэтому разрешенные элементы недоступны в конструкторе). Мне пришлось подключиться к уведомлению IPartInitialized и принять меры при возникновении этого события.

Я отмечаю это как правильный ответ не для того, чтобы повысить рейтинг, а чтобы помочь любому, кто столкнулся с той же проблемой.

...