gpt4 book ai didi

c# - 生产代码中的简单注入(inject)器验证()

转载 作者:太空狗 更新时间:2023-10-29 21:22:25 25 4
gpt4 key购买 nike

在生产代码中调用 container.Verify() 是最佳实践吗?我正在考虑搬到:

#IF Debug
container.Verify();
#ENDIF

我没有任何真正的理由进行更改,只是想知道一般共识/最佳实践是什么。

最佳答案

调用 Verify 是否有用还有待商榷。回到 2011 年,Mark Seemann没想到such a method is close to worthless .我的观点是调用 Verify 具有真正的值(value),但我理解 Mark 的观点并同意调用 Verify 本身通常是不够的。这就是为什么在 Verifying the container’s configuration 上有明确的指导在 Simple Injector wiki 中关于保持 DI 配置可验证的内容。

但是,使用 Simple Injector 时,Verify 所做的不仅仅是测试它是否可以创建您的对象图。调用 Verify 将启动 Simple Injector 的 Diagnostic Services它搜索非常常见但有时很难发现的配置错误(在 Mark 撰写该文章期间该功能不可用)。

一般来说,我的建议是在您的生产代码中调用 container.Verify,只要可行。始终在启动时调用它,无论是在调试和发布构建中,还是在您的暂存环境和生产环境中。

随着应用程序变得越来越大,在启动期间调用container.Verify 会变得更耗时。某些类型的应用程序对此比其他应用程序更敏感。对于服务器应用程序,启动时间较长通常是可以的,而桌面和手机应用程序必须启动得更快。

一旦您发现调用 Verify 花费的时间太长 - 但仅此而已 - 您应该删除对 Verify 的调用,但至少仍然有调用 container.Verify 的单元/集成测试。我认为在编译器指令中包装 Verify 没有问题(正如您在问题中所做的那样),但再次注意 IMO,您应该推迟在启动时删除对 Verify 的调用尽可能长的路径。

关于c# - 生产代码中的简单注入(inject)器验证(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24153454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com