c# - How to import only types, not instances? -
i'm importing dlls export iplugin
class using mef (system.componentmodel.composition) [importmany(typeof(iplugin))]
attribute.
here's code use fetch extensions:
aggregatecatalog catalog = new aggregatecatalog(); catalog.catalogs.add(new assemblycatalog(assembly.getexecutingassembly())); catalog.catalogs.add(new directorycatalog(appdatahelper.exedir + "/module/")); compositioncontainer container = new compositioncontainer(catalog); compositionbatch batch = new compositionbatch(); batch.addpart(this);
however, far see, corresponding property hold instances afterwards.
how import types (preferrably type
objects) of extensions can create instances myself?
you can't, mef works creating single instance of every compatible , exported type finds.
the easiest way around import factories , use them create actual instances.
the interface like:
interface ipluginfactory { iplugin createinstance(); string typename {get;} }
and search mef populated collection of factories right type name , call createinstance
function.
Comments
Post a Comment