托管可扩展性框架(MEF)和托管AddIn框架(MAF,又名System.AddIn)似乎完成了非常类似的任务.根据这个Stack Overflow问题,MEF是System.Addin的替代品吗?,你甚至可以同时使用两者.
你什么时候选择使用一个与另一个?在什么情况下你会选择同时使用它们?
如果我有一个类型MyClass,请注册
[Export(typeof(Myclass))]
属性,和
[PartCreationPolicy(CreationPolicy.Shared)]
要么
[PartCreationPolicy(CreationPolicy.NonShared)]
然后试着打电话
compositionContainer.GetExportedValue<Myclass>() 多次.
问题:通过第一次通话,我将通过MEF获取我的注册课程 - llokup所有已注册的程序集,然后尝试查找一个已注册的合同.问题是关于第二次等等 - MEF会再次进行全局查询还是在内部缓存?