gpt4 book ai didi

asp.net-mvc - 使用依赖注入(inject)组织 ASP.Net MVC 解决方案的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-03 22:31:01 24 4
gpt4 key购买 nike

我正在开发一个新的 ASP.Net MVC 项目,我正在使用这个项目进入 DI。我很确定我将使用结构图,但这不是我要问的。我想弄清楚的是如何最好地组织我的解决方案。单元测试项目和模型是否都获得了一个配置文件来映射它们的依赖关系,或者是否有一个类来统治它们?

另外,在我深入这个之前,是否有任何新手陷阱需要避免?

非常感谢,所有......

更新
我应该补充一点,当我说“组织解决方案”时,我指的不是文件/文件夹等的数量,而是如何构造与 DI 相关的类。特别是如何管理 Bootstrap 。我可以看到我糟糕的措辞可能会导致困惑。

最佳答案

如果你是唯一一个在这个项目上工作的人,我会做 首先对你有意义的事情 .没有什么比强加给您不直观的目录或项目结构更糟糕的了。 BaseController 类是在\Core\文件夹还是\Controller\文件夹中?我个人会查看 Controller ,但有些人发誓它应该在\Core\或\Bases 中。

第一个新手陷阱认为您可以以错误的方式组织代码,并且以某种方式反射(reflect)了项目的成功。我见过一个文件夹中有 30 个文件的项目,而其他项目中有 30 个文件的 20 个文件夹。

第二个新手陷阱忘记了与其他语言相比,您拥有出色的智能感知、代码导航工具和 Visual Studio 的重构支持。您还有一个编译器,它可以让放错文件的痛苦大大减少。如果你把东西放在“错误”的地方,没关系,你总能找到它并将它拖到需要的地方。

老实说,我现在正在做一个项目,我什至不确定某些类在我的文件结构中的位置。 Go To Definition/Declaration 是我经常使用的键盘快捷键。因为只有我在使用代码,所以这很好。如果我不得不在项目中添加另一个开发人员,我可能会清理干净。

就我个人而言,我倾向于将接口(interface)及其实现类型放在同一个文件夹中。 IPaymentGateway 与 AuthorizeNetGateway 和 PaypalGateway 位于同一文件夹中。如果我无法在我的解决方案资源管理器侧边栏中一次查看该文件夹中的所有文件,那么我将所有网关文件移动到\Gateway\文件夹中。

随着依赖注入(inject)添加到组合中,我建议您只关注 namespace 爆炸。你能做的最糟糕的事情就是用长的 using 声明和别名弄乱你的 Bootstrap 和文件。

ForRequestedType<Customer>

比干净
using KevDog.Models
using Customer=KevDog.Models.Customer

或者
ForRequestedType<KevDog.Models.Customer>

避免此问题的另一种方法是在命名事物时明确:Customer、CustomerViewModel、CustomerController、CustomerDataRow、CustomerView

对于 TDD,您几乎必须有两个 Bootstrap 来管理您的具体类型。您真的不希望您的单元测试使用 AuthorizeNetGateway : IPaymentGateway,而是 StubGateway : IPaymentGateway。

现在我也是 DI 的新手,所以我倾向于让事情变得非常简单,并反射(reflect) 101 级教程和文档。仅在特定情况需要并且您确切知道为什么要这样做时才应使用基于构建配置的动态注入(inject)。

我通常也会保留 MVC 应用程序的默认结构。让您的代码与 99% 的教程和视频具有相同的结构更容易。

希望这可以帮助。

关于asp.net-mvc - 使用依赖注入(inject)组织 ASP.Net MVC 解决方案的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/963183/

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