autofac获取全局Container

_UserService = ((IContainerProviderAccessor)HttpContext.Current.ApplicationInstance).ContainerProvider.ApplicationContainer.Resolve<IUserContract>();

当你使用 Autofac 中的 `ResolveNamed` 方法解析指定命名的组件时,你可以通过 `NamedParameter` 类型的对象来传递参数。下面是一个例子: 假设我们有一个 `SomeService` 类型的组件,它有一个名为 `param` 的构造函数参数。我们想要解析这个组件的一个名为 `foo` 的实例,并为构造函数参数传递一个值为 `42` 的整数。 首先,我们需要在注册服务时为它们指定名称和参数。我们可以像这样注册: ``` csharp var builder = new ContainerBuilder(); builder.RegisterType<SomeService>().Named<ISomeService>("foo") .WithParameter("param", 42); ``` 注意,我们在注册服务时使用 `WithParameter` 方法来传递构造函数参数。 然后,我们可以使用 `NamedParameter` 类型和 `ResolveNamed` 方法来解析指定名称的服务实现,并传递构造函数参数。例如,我们可以像这样解析名为 `foo` 的服务,并传递 `param` 参数: ``` csharp var container = builder.Build(); var service = container.ResolveNamed<ISomeService>("foo", new NamedParameter("param", 42)); ``` 这将返回一个名为 `foo` 的 `SomeService` 实例,并且该实例的 `param` 参数将设置为 `42`。 需要注意的是,如果组件中有多个构造函数或多个同名的构造函数参数,则需要使用 `ResolvedParameter` 类型的对象来指定要使用的构造函数或构造函数参数。例如,如果 `SomeService` 类型有两个构造函数,其中一个接受一个整数类型的参数,那么我们需要使用 `ResolvedParameter` 类型的对象来指定要使用的构造函数。例如: ``` csharp var container = builder.Build(); var service = container.ResolveNamed<ISomeService>("foo", new ResolvedParameter( (pi, ctx) => pi.ParameterType == typeof(int), (pi, ctx) => 42)); ``` 这将返回一个名为 `foo` 的 `SomeService` 实例,并且该实例的构造函数参数将设置为 `42`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值