[英]How to identify parts in MEF?
问题很简单:在实际创建零件之前,我需要某种方法来识别可组合的零件定义。
换句话说,我需要能够将标识该零件的字符串发送到某个远程站点,该站点稍后会将其发送回给我,并且我应该能够根据该字符串选择相同的零件。 我不一定需要一个字符串(我可以构建自己的地图),但是我需要一些唯一且可比的东西。
我想到并拒绝的一些事情:
元数据确实是唯一可行的选择,尤其是如果您希望标识符随时间保持稳定,例如面对应用程序重新启动或实现类重构/重命名时。
如果在两次应用程序重启之间不需要稳定性,则可以执行以下任一操作:
RegistrationBuilder
以编程方式生成必要的元数据值,例如基于递增的整数; 要么, [MetadataAttribute]
,该自定义[MetadataAttribute]
在运行时执行大致相同的操作以生成id值 如果需要在两次重启之间保持稳定,而在两次重建之间则不需要,那么可以选择使用RegistrationBuilder
根据类型名称分配ID。
当然,此时,只能在MEF 2的CodePlex预览版本或.NET 4.5 Developer Preview中使用RegistrationBuilder
。
TLDR; 手动应用元数据属性是您的最佳选择。 在调试模式下,您可以在应用程序中编写后初始化例程,以确保唯一性/存在性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.