具有安全性和配置文件效率的 MEF 插件

发布于 2024-10-17 12:24:26 字数 201 浏览 2 评论 0原文

我有一个具有许多模块/插件的应用程序。我使用带有目录插件的 MEF 来导入它们。每个用户都有一个存储在数据库中的可用模块列表,每个用户可以有多个配置文件来控制哪些模块可见。

有一个概述区域显示来自具有 [ImportMany(typeof(IModule)] 属性的所有可见模块的信息。

处理此问题的好方法是什么,以便不在内存中创建不可见或不可访问的模块。

I have an application that has many modules/plugins. I am using MEF with a Directory plugin to import them. Each user has a list of available modules stored in a database and each user can have multiple profiles controlling which modules are visible.

There is an overview area showing information from all visible modules with an [ImportMany(typeof(IModule)] attribute.

What is a good way of handling this so that invisible or inaccessible modules are not created in memory.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夜巴黎 2024-10-24 12:24:26

延迟加载它们将确保它们不会被初始化或加载到内存中。然后使用元数据查找模块名称和详细信息。

Lazy loading them will ensure they are not initialised or loaded into memory. Then use metadata to find the module names and details.

记忆里有你的影子 2024-10-24 12:24:26

使用 [ImportMany(typeof(IModule)] 将创建每个模块的实例 - 这就是 MEF 的工作方式。因此,一种方法是让模块的构造函数不执行任何操作,然后调用您实际想要使用的每个模块上的 Load 方法,它可以在其中执行它需要执行的任何工作。

或者,创建一个名为 IModuleInfo 的新接口,其中仅包含以下内容。您的概览区域所需的信息。

Using [ImportMany(typeof(IModule)] will create an instance of each module - that's just the way MEF works. So one approach would be for the constructors of your Modules to do nothing, and then call a Load method on each Module that you actually want to use, in which it can do whatever work it needs to do.

Alternatively, create a new interface called IModuleInfo which just has the information necessary for your overview area.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文