Xamarin 和托管可扩展性框架 (MEF)

Posted

技术标签:

【中文标题】Xamarin 和托管可扩展性框架 (MEF)【英文标题】:Xamarin and Managed Extensibility Framework (MEF) 【发布时间】:2016-12-19 05:39:52 【问题描述】:

我正在考虑一个新的移动/平板电脑应用程序。

我想让用户开发自己的插件。

想象一下在 android 平板电脑上运行的收银台应用程序。用户在连接到信用卡读卡器时可以使用多种选择(Square、Sum'Up、...)。

如果我的应用程序是旧的 Win32,我会发布一个 API 并让 SquareSum'Up 开发人员创建一个 DLL。然后,该 DLL 将被放置在计算机上的某个位置。在应用程序启动时,我只需要查找那些 DLL 并动态加载它们。

事实上,真正的问题是:是否可以创建基于插件的应用程序?我在这里考虑托管可扩展性框架。很多问题浮现在脑海:

如何部署这些插件? 这是否适用于所有平台(ios、Android、UWP)? ...

我无法找到有关此的任何文档。

非常感谢您的想法和指示。

【问题讨论】:

你找到答案了吗? @BrunoMartinsPro,我没有得到答案。我的 Xamarin 项目在我真正需要 MEF 之前就死了:D 很遗憾听到@JulienFerraro。 【参考方案1】:

不确定这是否完全回答了您的问题。

但是,如果您将 DLL 放在可公开发现的位置(例如 /storage/emulated/0 中),类似 MEF 的架构可能会在 Android 上运行。或者,此类插件可以作为单独的应用程序分发,提供可从其他应用程序消耗的服务、内容提供程序和活动。

但是,在 iOS 上,您将无法在 App Store 中发布这样的应用程序,因为 Apple 不允许您在那里使用动态链接库。您可以也许为不在 App Store 上的应用程序这样做,例如企业分发。

虽然它可能不是最好的解决方案。您将始终能够通过 URL 在 iOS 上的应用程序之间导航。但是,这并不是最好的体验,因为这意味着每次您想进入“插件”应用程序做某事时,您都会离开您的应用程序。

【讨论】:

以上是关于Xamarin 和托管可扩展性框架 (MEF)的主要内容,如果未能解决你的问题,请参考以下文章

在.NET Core中使用MEF

C#可扩展编程之MEF:MEF简介及简单的Demo

C#可扩展编程之MEF学习笔记:MEF简介及简单的Demo(转)

如何注入在 Windsor 注册的 MEF [ImportingConstructor] 依赖项?

C# WPF Caliburn.Micro框架下利用Mef加载其它项目界面

在 Azure 中托管 WCF 和可扩展性怎么样?