что именно делает метод CompositionContainer.ComposeExportedValue? - PullRequest
2 голосов
/ 30 января 2011

Принимает ли метод CompositionContainer.ComposeExportedValue объект и делает ли метод экспорта объекта доступным?Я немного смущен тем, что делает этот метод.Все, что я знаю, - то, что этот метод регистрирует объект с контейнером.Как он регистрирует объекты в контейнере?Величественно ли этот метод делает методы экспорта объекта или объект, имеющий атрибут экспорта, доступным для других классов?

1 Ответ

4 голосов
/ 30 января 2011

AFAIK метод расширения AttributedModelServices.ComposeExportedValue<T> для CompositionContainer регистрирует данный объект как часть, удовлетворяющую контракту T. Это означает, что объект действительно будет использоваться для создания других объектов, которые импортируют T.

Возможно, более важно то, что он не делает :

  • Он не пытается установить какие-либо свойства с атрибутами импорта. Вы можете сделать это с помощью AttributedModelServices.ComposeParts.
  • Не передает право собственности на объект контейнеру. Если объект IDisposable, он будет не удален при утилизации контейнера.

В общем, вам следует избегать этих методов. Обычно вы просто добавляете необходимые атрибуты в ваш класс и добавляете его в контейнер через AssemblyCatalog.

...