Autofac:如何在内部解析链中控制发送到依赖项的实例?
创始人
2024-11-12 13:00:14
0

我们可以使用 Register() 方法的 lambda 表达式方式来注册类型。通过使用 AsSelf() 方法将注册为其本身,最终返回其本身作为服务类型的对象。

以下是示例代码:

builder.Register(c => new MyService(new DependencyA(), new DependencyB()))
       .AsSelf()
       .InstancePerLifetimeScope();

该代码中,我们手动实例化MyService类,并将DependencyA和DependencyB的实例传递给了MyService的构造函数。使用AsSelf()将MyService注册为其本身,并且使用InstancePerLifetimeScope()将其作用域解析为单个请求中的实例。

如果我们需要对MyService的内部依赖项进行更精确的控制,那么我们可以将其依赖项注册为服务类型,即使它们是在内部对象图中使用,也可以使用Register方法在容器中建立作用域。

下面是一个示例代码,展示了如何将DependencyADependencyB作为服务注册,并注入到MyService类中:

builder.RegisterType().AsSelf().InstancePerLifetimeScope();

// Register dependencies for internal resolution
builder.RegisterType().InstancePerLifetimeScope();
builder.RegisterType().InstancePerLifetimeScope();

// Resolve MyService and inject the dependency resolved from named scope
using (var scope = container.BeginLifetimeScope())
{
    var myService = scope.Resolve(TypedParameter.From(scope.Resolve()));
}

此代码中,我们使用InstancePerLifetimeScope()方法将DependencyA和DependencyB注册为服务类型,并在容器的生命周期内为其设置作用域。这将确保DependencyA和DependencyB作为服务类型的单个实例仅在其子级Scope内解析时被创建。

然后使用名为“DependencyA”的参数调用Resolve()方法来解析MyService类型内部DependencyA的依赖项。

总之,我们可以通过手动实例化类并将其依赖项注册为服务类型,使用Lambda表达式控制内部对象图的传递,以精确地解决传递实例的问题。

相关内容

热门资讯

微乐小程序授权!微乐小程序黑科... 微乐小程序授权!微乐小程序黑科技(透视)技巧-好像辅助是真的挂1、实时微乐小程序黑科技透视辅助更新:...
第五分钟安装!微乐小程序游戏辅... 第五分钟安装!微乐小程序游戏辅助器脚本官网,微乐小程序免费黑科技,课程教程(有挂下载)-哔哩哔哩1、...
微信小程序微乐房间有挂吗!微乐... 微信小程序微乐房间有挂吗!微乐小程序免费黑科技(透视)挂-总是了解存在有挂;1、游戏颠覆性的策略玩法...
三分钟插件!微乐自建房辅助软件... 三分钟插件!微乐自建房辅助软件下载,微乐小程序免费黑科技,举措教程(有挂脚本)-哔哩哔哩1、金币登录...
微信小程序 微乐陕西挖坑 外挂... 微信小程序 微乐陕西挖坑 外挂!微乐小程序黑科技(透视)app-真是曝光有挂1、每一步都需要思考,不...
第一分钟插件!微乐自建房怎么挂... 第一分钟插件!微乐自建房怎么挂脚本,微乐小程序黑科技,绝活儿教程(有挂工具)-哔哩哔哩1、进入游戏-...
微乐陕西麻将破解!微乐小程序免... 微乐陕西麻将破解!微乐小程序免费黑科技(透视)软件-总是揭幕真的有挂1、在微乐小程序免费黑科技插件功...
第1分钟插件!微信小程序微乐陕... 第1分钟插件!微信小程序微乐陕西挖坑辅助,微乐小程序免费黑科技,指引教程(有挂安装)-哔哩哔哩1)微...
微信小程序微乐破解器2025!... 微信小程序微乐破解器2025!微乐小程序免费黑科技(透视)app-都是教你存在有挂1、任何微乐小程序...
第十分钟脚本!微乐小程序辅助器... 第十分钟脚本!微乐小程序辅助器代理,微乐小程序黑科技,技法教程(有挂神器)-哔哩哔哩1、很好的工具软...