使用数据库信息配置 Unity 容器

本文关键字:Unity 容器 配置 信息 数据库 | 更新日期: 2023-09-27 18:35:36

通常,Unity (DIC) 使用标准的 XML 配置文件(如 web.config)进行配置。

出于项目的目的,Unity 提供了我很乐意使用的强大功能。但是,由于其他客户可能希望使用它,并且并非所有客户都希望使用 XML 配置文件,因此希望能够创建适配器,以便客户可以按照他想要的方式加载他/她自己的配置。

因此,根据他们的需要,从 txt、自定义 xml 文件、标准 web.config 文件或更重要的是从他们定义的数据库架构加载配置。因此,容器的所有映射都采用上述任何一种方式。

我在想最好的方法是什么。可能最终会以自定义方式执行此操作。

与Unity竞争的意见或其他工具允许这样做?

谢谢!

使用数据库信息配置 Unity 容器

Unity API 允许您在配置文件中执行所有可以执行的操作。实际上,配置文件加载器只是读取指令并调用相应的API。

我的第一个建议是考虑使用 API 来配置容器而不是配置文件。其次,如果您确实想从其他地方加载 config,那么只需为您想要的任何格式编写一个读取器,并根据您加载的内容调用容器 API。

"盒子"中没有任何内容可以从其他来源读取配置,但很容易编写。

一种方法是使用反射将存储在数据库中作为字符串的类型名称转换为type实例。然后,可以通过以编程方式将类型映射加载到容器中,在应用程序启动时配置 Unity。

我目前没有打开 VS,但我认为语法是这样的:

var mapFrom = typeof(IMyInterface);
var mapTo = Type.GetType("My.App.MyType"); // load the string from the DB
var container = new UnityContainer();
container.RegisterType(mapFrom, mapTo);

您可能还想查看 MEF Microsoft。 它并没有完全按照您所说的去做,但它更多地围绕插件体系结构进行设计,并且能够将不同的.dll拖放到文件夹中并让应用程序自动使用它们。