【问题标题】:Dependency Injection in .net 4.7?.net 4.7 中的依赖注入?
【发布时间】:2019-02-08 01:00:01
【问题描述】:

对于 DI 有哪些集成选项,我有点困惑。我认为.net core(对于我的特定项目)非常简单,但我不需要构建跨平台应用程序,也看不到使用 core 的优势。但是,看起来 .net 框架应用程序仍然使用 Global.asax 而没有 Startup.cs 设置,这是否意味着 .net 框架 4.7 没有集成的 DI 选项?我是否仍需要获得第 3 方解决方案,或者是否有办法在 .net 框架项目中使用与核心项目中相同的 DI 工作流?

【问题讨论】:

  • DI 是仅在 dotnet 核心中的一等公民,您唯一的选择是 Autofac 或 Ninject 等框架
  • @saj 好的,谢谢。太糟糕了:/
  • 在 ASP.NET Core 2.2 之前你可以拥有一个完整的 .NET Framework ASP.NET Core 应用程序
  • 您没有看到 .NET Core 的优势吗?即使您对跨平台不感兴趣,仍然有改进的 csproj 和使用 VS 之外的 IDE 的能力、将框架与应用程序一起发布的能力(支持并行部署、更好的性能、更多的命令行选项、更好的容器支持等。如果你开始新的开发,你绝对应该使用 .NET Core 而不是 .NET Framework。.NET Core/Standard 应该是默认选择,并且只有在有特定原因时才应该使用 .NET Framework这样做。
  • @mason Lol,我理解你为什么以你的方式解释我的评论,但我绝对不是那个意思。是的,当然我完全得到了.net core 的好处,我认为它真的很酷。我真正的意思是,我不认为将我们现有的项目转换为 .net 核心来证明所涉及的工作有任何显着优势。很抱歉造成混乱。不要恨我。 :)

标签: asp.net-mvc dependency-injection


【解决方案1】:

经典asp.net默认不集成依赖注入,需要添加nuget包处理DI(asp.net core默认集成)。

【讨论】:

    【解决方案2】:

    编辑:即使我发现了如何做到这一点,如下所述,我最终还是选择了 Autofac,因为我没有意识到微软的解决方案只支持构造函数注入,但不支持属性注入.

    我在这里找到了如何操作的说明。我知道链接答案很糟糕,但我没有时间做更多的事情。如果其他人想用完整的说明来回答,我会标记它。

    https://scottdorman.blog/2016/03/17/integrating-asp-net-core-dependency-injection-in-mvc-4/

    另请注意,如果您尚未使用 Owin,则不需要。您可以在Global.asaxApplication_Start 方法中进行相同的设置。您需要做的唯一更改是当它在反射式获取所有 Controller 类的语句中引用 Startup 类时,您需要将其更改为代码所在的类(或程序集中的任何其他类) .

    【讨论】:

    • 找不到页面 :-(
    • @Mike 对此感到抱歉。你考虑过Autofac吗?回想起来,无论如何我宁愿使用它……而且它很容易上手。我也使用过 Ninject 和 Castle,在这 3 个之间我绝对更喜欢 Autofac。
    • 谢谢,会调查的。
    猜你喜欢
    • 1970-01-01
    • 2021-07-15
    • 2016-05-22
    • 1970-01-01
    • 2020-12-20
    • 2010-10-19
    • 2011-01-09
    • 2018-03-03
    • 2021-10-23
    相关资源
    最近更新 更多