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.
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 .
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.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.