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

时间:2012-05-29 21:33:21

标签: c# .net unity-container dependency-management

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

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

因此,从txt,自定义xml文件,标准web.config文件加载配置,或者更重要的是,根据需要从他们定义的数据库模式加载配置。所以容器的所有映射都是以这些方式进行的。

我在想什么才是最好的方法。可能最终会以自定义的方式进行。

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

谢谢!

2 个答案:

答案 0 :(得分:3)

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

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

“框”中没有任何内容可以从其他来源读取配置,但它很容易编写。

答案 1 :(得分:1)

一种方法是使用反射将类型名称(在DB中存储为字符串)转换为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);

您可能还想查看Microsoft MEF。它不是完全你正在谈论的内容,但它更多地是围绕插件架构设计的,并且能够将不同的.dll放入文件夹并让应用程序自动使用它们。