По умолчанию ImportAttribute
требует, чтобы ровно одна часть удовлетворяла договору, указанному в атрибуте.Это поведение можно изменить с помощью свойства ImportAttribute.AllowDefault
.По сути, это меняет поведение, позволяя нулю или одной части удовлетворить контракт.Если нет частей, вместо этого используется значение по умолчанию для этого импорта.
ImportManyAttribute
позволяет ноль или более частей удовлетворить контракт.MEF будет удовлетворять этот импорт, используя пустую коллекцию, или одноэлементную коллекцию, или набор частей в зависимости от того, что он находит.
Как мне сказать MEF, что пустая коллекция недействительна?
Должен ли я:
- Реализовать
IPartImportsSatisfiedNotification
и выдать исключение из OnImportsSatisfied
, если коллекция пуста? - Реализовать мою собственную
ImportOneOrMoreAttribute
? - Использовать некоторые встроенные функции MEF, которые мне как-то не хватает?