I'm trying to wrap my mind around MEF. There is one thing I don't understand.
Assume that I have an interface, named ISomething, which is a contract, and I have more than one assemblies in a folder that contains my application, and I have no idea how many ISomething implementations are in them, or which one contains one.
If I create a host application in which I use MEF, and would like to get an ISomething, but only one, how does MEF decide which implementation it will give me?
Or, similarly to a common IoC container, how do I tell it which implementation should it use?
Thanks in advance for your answers.
In the case of MEF, if you have many Exports that will satisfy an Import, you have two options:
[ImportMany]
. Decide, at runtime, which of the Imports to use for your contract, potentially just picking the first, or one at random.[ImportMany]
in conjunction with Metadata in order to decide which Import to use.See this blog post for a discussion of this issue and some of the options you have. Also, Glenn Block has a blog post describing how to customize the container behavior with defaults.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With