Silverlight 4.0 MEF和引用dll之间的差异

Silverlight 4.0 MEF和引用dll之间的差异,silverlight-4.0,prism,mef,silverlight-5.0,Silverlight 4.0,Prism,Mef,Silverlight 5.0,我正在从事一个silverlight项目,我正在使用MEF下载其他silverlight项目的xap文件,并在我的主项目中使用它的页面和功能 我可以使用将该项目的dll引用到我的主项目中来做同样的事情 所以我想知道使用MEF重用组件和简单地在当前项目中添加对另一个项目的DLL的引用之间的区别是什么?我的意思是,我们还添加了对当前项目中导入的项目的引用。那么它与传统的组件使用形式有什么不同呢 谢谢,首先,我们需要分离MEF和PRISM(因为您在标签中使用了它) MEF主要用于提供。它可以轻松地管理

我正在从事一个silverlight项目,我正在使用MEF下载其他silverlight项目的xap文件,并在我的主项目中使用它的页面和功能

我可以使用将该项目的dll引用到我的主项目中来做同样的事情

所以我想知道使用MEF重用组件和简单地在当前项目中添加对另一个项目的DLL的引用之间的区别是什么?我的意思是,我们还添加了对当前项目中导入的项目的引用。那么它与传统的组件使用形式有什么不同呢


谢谢,

首先,我们需要分离MEF和PRISM(因为您在标签中使用了它)

MEF主要用于提供。它可以轻松地管理viewmodels和其他类之间的依赖关系,从而分离关注点并提高可测试性(以及其他好处)

然而,PRISM主要是为以下场景而设计的:您不知道什么视图在编译时进入特定的容器,并且希望ViewA用于CustomerA,ViewB用于CustomerB等等。PRISM可以帮助您以某种方式将区域和视图紧密耦合,以便应用程序可以在运行时决定将显示什么视图。另一种情况是,管理员获得一个视图,其他用户获得另一个视图,等等。PRISM还有其他功能(如事件聚合器),但我认为前者是最重要的功能

现在,我想说,在更大的项目中使用MEF从来都不是坏事。但是如果你真的需要PRISM提供的功能,我只会使用它,因为它可能非常有限。如果没有,只需按照说明添加引用,并让MEF知道带有AssemblyCatalog的那些程序集

因此,对于MEF,我建议您了解深度注射和IoC。我觉得很好。至于PRISM,熟悉它的功能,并决定是否真的需要它


希望这能有所帮助。

让我补充一下Lue关于MEF和引用DLL之间区别的回答:

这两件事是正交活动,这意味着如果直接引用dll,您可能仍然希望使用MEF来检测其中的类型,反之亦然,您可能会在动态加载的dll中获取特定类型(没有MEF)


MEF基本上是根据特定的标准在DLL中查找类型,并在其中添加了一些方便的内容,以自动使用此类类型填充属性和集合。它可以用来使系统更加解耦,从而更易于维护。例如,视频编辑软件可能会查找所有已知DLL中实现特定接口的所有类型,以用作过滤器。无论您是将过滤器直接作为dll包含,还是让用户按需下载:在这两种情况下,您的应用程序都会通过使用MEF变得稍微干净,因为任何地方都没有硬编码的过滤器列表。不过,在动态库中加载MEF特别有用。

感谢您的回复。。。但我要问的是MEF和引用dll之间的区别。你能帮我找出它们之间的区别吗?使用引用,你会产生紧耦合,使用MEF,你会产生松耦合。如果你仔细阅读了依赖注入,这个解释将非常清楚:>