デフォルトでは、ImportAttribute
は、正確に1つの部分が属性で指定されたコントラクトを満たす必要があります。この現象は、ImportAttribute.AllowDefault
プロパティで変更できます。基本的には、これにより、ゼロまたは1つのパーツが契約を満たすことができるように動作が変更されます。パーツがない場合は、そのインポートのデフォルト値が代わりに使用されます。ImportMany属性を使用する場合、少なくとも1つの部品をインポートする必要がありますか?
ImportManyAttribute
は、0個以上の部分が契約を満たすことを許可します。 MEFは、空のコレクション、シングルトンコレクション、または検出された内容に応じた一連のパーツを使用して、このインポートを満たします。
MEFに空のコレクションが無効であると伝えるにはどうすればよいですか?
私がすべき:
IPartImportsSatisfiedNotification
を実装し、コレクションが空の場合OnImportsSatisfied
から例外をスロー?- 私自身の
ImportOneOrMoreAttribute
を実装していますか? - 何らかの欠けているMEFの機能を組み込みましたか?
私はしっとりと現実を受け入れる:( –
これはうっかり、将来的にはOneOrMoreを追加することを望んでいる。 – Contango