首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Autofac相当于Ninject的WhenInjectedInto()

好的,我来尝试回答这个问题。

首先,我们需要了解 Autofac 和 Ninject 这两个框架。

Autofac 是一个 C# 的开源依赖注入框架,它可以帮助开发者更轻松地实现依赖注入,从而提高代码的可测试性和可维护性。Autofac 提供了一个简单易用的 API,可以轻松地注册和解析依赖。

Ninject 是一个轻量级的依赖注入框架,它也可以帮助开发者更轻松地实现依赖注入。Ninject 提供了一个简单易用的 API,可以轻松地注册和解析依赖。

在 Ninject 中,WhenInjectedInto() 方法可以用于指定依赖注入的范围,即在哪些类型中注入哪些依赖。

现在,我们来看看 Autofac 中相当于 WhenInjectedInto() 的方法。

在 Autofac 中,可以使用 WithProperty() 方法来指定依赖注入的范围。WithProperty() 方法可以接受一个 Lambda 表达式,用于指定依赖注入的条件。

例如,如果我们想要在注入 IService 依赖时,只在 MyClass 类型中注入 MyService 实现,可以使用以下代码:

代码语言:csharp
复制
builder.RegisterType<MyService>().As<IService>().WithProperty("Instance", new MyClass());

这样,在解析 IService 依赖时,Autofac 会根据 WithProperty() 方法中的条件,判断是否需要注入 MyService 实现。

总结一下,Autofac 中相当于 Ninject 的 WhenInjectedInto() 方法的是 WithProperty() 方法,它可以用于指定依赖注入的范围。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET Core 整合Autofac和Castle实现自动AOP拦截

前言: 除了ASP.NETCore自带IOC容器外,我们还可以使用其他成熟DI框架,如Autofac,StructureMap等(笔者只用过Unity,Ninject和Castle)。...": "1.0.0", "Autofac": "4.1.1", "Autofac.Extensions.DependencyInjection": "4.0.0", 接着我们也修改Startup文件中...)); 2.2 引用程序集 显然些程序集还没有Core对应版本Autofac.Extras.DynamicProxy,既然说好要整合,就修改一下源代码吧。...Autofac.Extras.DynamicProxy之所以不能支持Core,主要是因为在源码中没有使用新反射API,GetTypeInfo或使用了一些RemotingAPI导致。...(2).对应ASP.NET Core提及不同生命周期,Autofac也定义了对应扩展方法,如InstancePerLifetimeScope等,默认为Transient模式,包括EntityFramwork

1.3K40

AI介绍依赖注入在Blazor项目中使用方法。

写一篇介绍依赖注入在Blazor项目中使用方法。 当我们在Blazor项目中使用依赖注入(DI)时,我们可以使用.NET Core自带DI容器或第三方DI容器,如AutofacNinject。...这些容器可以帮助我们管理和注入应用程序中依赖项,使代码更加可维护和可测试。 首先,我们需要在项目中安装所需DI容器。...例如,如果我们要使用Autofac,我们可以使用NuGet包管理器安装Autofac.Extensions.DependencyInjection包。...在ConfigureServices方法中,我们可以添加依赖项并指定它们生命周期。...例如,以下代码片段将注册一个名为MyService服务,并将其生命周期设置为每个请求: services.AddScoped(); 接下来,在需要使用服务组件中

24520
  • 通过反射实现IOC功能

    这段时间园子里有不少介绍IOC组件文章,由于自己也一直在学习IOC各种组件,及IOC思想,常见IOC组件很多:AutoFacNinject、Utity包括.NET自带MEF等。...由于今天周六,女朋友去加班了(也是一枚标准程序媛,做java开发),闲来没事,自己就想着根据反射可以自己写一个简易IOC组件。IOC组件说白了就是根据反射实例化对应接口。...Common 通过配置文件实例化对应接口 IBLL定义接口 BLL实现接口 2、引用 IOCTest项目引用IBLL、Common项目,不能引用BLL项目,这样就使IOCTest项目只依赖接口。...3、下面我们来看具体实现 (1)在IBLL层IHelloWord.cs类中我们定义一个接口,代码如下 using System; using System.Collections.Generic;...到此结束,准备收拾收拾下楼去吃饭,下午去国家图书馆看书,后续把AutoFacNinject、Utity总结一下,感觉Ninject比较好用,有兴趣同学可以研究一下。

    62210

    依赖注入容器Autofac

    这些容器简要介绍可以参看: IoC in .NET part 1: Autofac IoC in .NET part2: StructureMap IoC in .NET part 3: Ninject...,Autofac和其他容器不同之处是它和C#语言结合非常紧密,在使用过程中对你应用侵入性几乎为零,更容易与第三方组件集成。...Autofac主要特性如下: 灵活组件实例化:Autofac支持自动装配,给定组件类型Autofac自动选择使用构造函数注入或者属性注入,Autofac还可以基于lambda表达式创建实例,这使得容器非常灵活...通过嵌套容器实例和对象作用域使得资源可视化。 Autofac设计上非常务实,这方面更多是为我们这些容器使用者考虑: 组件侵入性为零:组件不需要去引用Autofac。...Autofac之旅吧,可以给你不一样思路。

    1.2K90

    Autofac在.NET Core 中使用

    前言 Autofac 是一款.NET IoC 容器 . 它管理类之间依赖关系, 从而使应用在规模及复杂性增长情况下依然可以轻易地修改 。....NET CORE 中也内置了依赖注入,但是有些情况下需要用到Autofac去进行依赖注入,Autofac支持所有注入方式以外,还支持属性注入和方法注入。...接下来我们通过示例来简单了解Autofac使用 示例 新建两个.NET CORE 项目,一个WEB层,一个服务层 ? 服务层中添加几个测试服务和模块文件 ? 服务代码都如图所示 ?...NetCoreAutofacServiceModule 类继承Autofac.Module,并重写Autofac管道中Load方法,如下图多种方式注入服务。 ?...接下来就是在WEB层配置Autofac,这里需要注意是.Net Core2+ 和 .Net Core3+ 配置方法稍有不同 .NET CORE 2+ 在NET Core 2.1时候,AutoFac

    1.8K30

    造轮子之自动依赖注入

    三方依赖注入 ASP.NET Core也支持使用第三方依赖注入容器,例如AutofacNinject、Unity等。这些容器提供了更多功能和灵活性,可以满足更复杂依赖注入需求。...既然我们需要做一个比较灵活依赖注入,那么就选择三方组件更合适,这里我们选用autofac。 生命周期接口 依赖注入对应有不同生命周期,我们按照官方三种生命周期创建三个生命周期接口。...集成Autofac 安装AutofacNUGET包。...在后续开发中,我们所有需要注册依赖注入服务只需要按需继承三个生命周期接口即可。 可能有人会问使用了Autofac之后是否必须所有的服务都必须用Autofac方式去注册服务,不能使用原生方式。...这点大可不必担心,使用autofac后,我们依然可以使用原生AddScope等方法手动去注入我们服务,同样是生效

    26420

    ASP.NET Core依赖注入解读&使用Autofac替代实现

    标签: 依赖注入 Autofac ASPNETCore 1. 前言 关于IoC模式(控制反转)和DI技术(依赖注入),我们已经见过很多探讨,这里就不再赘述了。...Autofac实现和自定义实现扩展方法 除了ASP.NETCore自带IOC容器外,我们还可以使用其他成熟DI框架,如Autofac,StructureMap等(笔者只用过Unity,Ninject...3.1 安装Autofac 首先在project.jsondependency节点中加入Autofac.Extensions.DependencyInjection引用,目前最新版本是4.0.0-rc3...: 创建Autofac容器时不要忘了将ConfigureServices返回值修改为IServiceProvider 对应ASP.NET Core提及不同生命周期,Autofac也定义了对应扩展方法...ASP.NET Core自带IOC容器配合使用 Autofac Core版本和传统ASP.NET MVC项目版本区别 4.

    1.5K80

    Autofac创建实例方法总结

    1、InstancePerDependency 对每一个依赖或每一次调用创建一个新唯一实例。这也是默认创建实例方式。...2、InstancePerLifetimeScope 在一个生命周期域中,每一个依赖或调用创建一个单一共享实例,且每一个不同生命周期域,实例是唯一,不共享。...3、InstancePerMatchingLifetimeScope 在一个做标识生命周期域中,每一个依赖或调用创建一个单一共享实例。打了标识了生命周期域中子标识域中可以共享父级域中实例。...4、InstancePerOwned 在一个生命周期域中所拥有的实例创建生命周期中,每一个依赖组件或调用Resolve()方法创建一个单一共享实例,并且子生命周期域共享父生命周期域中实例。...若在继承层级中没有发现合适拥有子实例生命周期域,则抛出异常:DependencyResolutionException。

    1K20

    月球相当于北京几环?

    提出问题 整个世界是一个可计算世界!基于计算机数学教学理念(CBM)宗旨是培养学生计算思维!当听到这首歌时,大家有没有想过,北京环线有多长?覆盖地域有多宽?...将选中拟合公式复制下来,进行环线周长函数定义....最后制作成动态模型。 北京几环可以覆盖月球? 如果未来人类在月球上定居的话, 那么月球的人相当于住在北京多少环呢? ?...计算得到: 环路半径[40] 39148.9 结果表明,月球约相当于北京40环! 那么火星呢? 其他行星呢? 这些问题可以利用Wolfram|Alpha来继续探究...... ?...以上是一个基于计算机数学教学典型例子。培养计算思维CBM课程设计不能仅仅停留在理论层面,而应该与实际软件工具相结合。

    1.3K20

    .Net Core 学习之路-AutoFac使用

    本文不介绍IoC和DI概念,如果你对Ioc之前没有了解的话,建议先去搜索一下相关资料 这篇文章将简单介绍一下AutoFac基本使用以及在asp .net core中应用 Autofac介绍 组件三种注册方式...()) { var reader = scope.Resolve(); } 如果不止一个组件暴露了相同服务, Autofac将使用最后注册组件作为服务提供方。...在asp .net core中使用 在.net core 中使用autofac还是比较简单,相比于传统asp.net web 项目,省去了很多步骤 引入nuget程序包: Autofac Autofac.Extensions.DependencyInjection...函数,这个函数需要传入一个TModule泛型,称之为autofac模块 模块功能就是把所有相关注册配置都放在一个类中,使代码更易于维护和配置,下面展示了DefaultModuleRegister...autofac中了,所以现在可以在任何位置通过AutoFac解析出来.net core默认注入服务(IConfiguration,IHostingEnvironment等)了 正常项目使用中,我们应该将

    1.6K70

    ASP.NET Core appsettings.json文件(9)《从零开始学ASP.NET CORE MVC》:

    Asp.net Core 预制"空"模板创建,所以我们项目中已经有一个appsettings.json 文件了。..."AllowedHosts": "*", "MyKey": " appsettings.json中Mykey值", } 访问配置信息 若要访问 "Startup " 类中配置信息, 请注入框架提供...中,依赖注入是可选,要配置它,我们必须使用像Ninjectautofac、castle windsor等第三方框架。...在 asp. net Core 中, 依赖注入是不可或缺一部分。依赖注入能使我们能够创建低耦合、可扩展且易于测试系统。 我们将在即将推出视频中详细讨论依赖注入,尽情期待。...如果在多个配置源中具有相同密钥名称配置设置,简单来说就是重名了,则后面的配置源将覆盖先前配置源 。 几个地方演示,分别是如何替换

    1.4K20

    【 .NET Core 3.0 】框架之九 || 依赖注入 与 IoC

    二、常见IoC框架有哪些 1、Autofac+原生 我常用还是原生注入和 Autofac 注入。...Autofac:貌似目前net下用最多吧 Ninject:目前好像没多少人用了 Unity:也是较为常见 微软 core 自带 DI 其实.Net Core 有自己轻量级IoC框架, ASP.NET...2、三种注入生命周期 权重: AddSingleton→AddTransient→AddScoped AddSingleton生命周期: 项目启动-项目关闭 相当于静态类 只会有一个 AddScoped...(Autofac动态代理,它依赖Autofac,所以可以不用单独引入Autofac)、Autofac.Extensions.DependencyInjection(Autofac扩展),注意是最新版本...实例化过程注入到了Autofac容器中, 这个时候要看明白,前边是实现类,后边是接口,顺序不要搞混了。

    1K30

    Autofac容器对象实例几种生命周期类型

    实例范围决定了如何在同一服务请求之间共享实例。 请注意,您应该熟悉生命周期范围概念,以便更好地理解此处发生情况。...当请求服务时,Autofac可以返回单个实例(单实例作用域),新实例(每个依赖作用域)或某种上下文中单个实例,例如 线程或HTTP请求(每个生命周期范围)。...这适用于从显式Resolve()调用返回实例以及容器内部创建实例,以满足另一个组件依赖关系。 选择正确生命周期范围将有助于避免组件寿命过长或不够长俘获依赖和其他陷阱。...这允许您创建一种“范围单例”,其中嵌套生命周期范围可以在不声明全局共享实例情况下共享某个组件实例。...通过提供众所周知生命周期范围标记,注册便利方法以及针对常见应用程序类型集成,每个请求实例基于每个匹配生命周期范围实例构建。 但在幕后,它仍然只是每个匹配生命周期范围实例。

    1.5K30
    领券