c# - 以编程方式检查统一容器类型注册

标签 c# dependency-injection unity-container

我使用统一容器来解决应用程序中的依赖关系。

依赖项及其依赖项(等等)在 app.config 中注册,因为我需要能够更改应用程序在生产中的行为方式。

有时,依赖项的类型注册会被遗漏,只有在应用程序的生命周期内解决了一个类型的实例时才会出现这种情况,这意味着可能存在只能在集成测试期间才能发现的问题 -这并不理想。

我希望能够以编程方式检查(可能作为 CI 构建过程的一部分)统一类型注册是否正确。我的意思是,如果我解析了一个类型的实例,我可以确信该类型的依赖项(通过构造函数注入(inject))也已注册并将被解析。

我只需要检查默认的构建配置,在实时站点上所做的更改不在这里考虑。另外 - 我不想使用硬编码统一注册。

目前我能想到的唯一方法是解析统一配置文件并尝试解析找到的类型的每个实例...

是否有更简单的方法来验证统一注册是否全部存在?

最佳答案

我用unity经常遇到这个问题。

您可以编写一个使用反射来获取构造函数参数的应用程序。是这样的: ConstructorInfo.GetParameters();并递归获取每个返回参数的构造函数参数。如果您使该列表与众不同,那至少会为您提供应注册的预期类型列表。

希望这对您有所帮助。

关于c# - 以编程方式检查统一容器类型注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37133036/

相关文章:

c# - 在单元测试中使用 DI 容器

c# - 带有参数的Unity自动工厂

c# - 将 Windsor Logging Facility 安装到图书馆中

c# - 关于 c# struct 内存/序列化开销

c# - 无法连接到 ASP.Net 开发服务器问题

c# - 如何使用按键来运行方法?

grails - 从quartz作业访问grails应用程序配置

.net - Unity 框架 DependencyAttribute 仅适用于公共(public)属性?

wcf - 在Unity容器中注册WCF服务

c# - 为什么我的内存使用量在停止下载后激增?