gpt4 book ai didi

c# - 使用 Autofac 作为服务定位器

转载 作者:可可西里 更新时间:2023-11-01 07:57:00 27 4
gpt4 key购买 nike

我正在使用 Autofac 来处理我的应用程序中的依赖项注入(inject)。但是,我有一个组件在运行时执行一些反射魔法,但我不知道在编译时它需要什么依赖项。

通常,我会让这个组件直接引用容器并解析它想要的任何内容。但是,实例化此类的类没有对容器的引用。

实际上,我的组件依赖于 Autofac。我更喜欢松散的耦合,但这似乎不是这里的一个选项。有没有办法要求(在构造函数参数中,或使用属性注入(inject),或其他任何东西!)Autofac 在我的构造函数中给我一个容器的引用?或者,有没有更简洁的方法让 Autofac 为我提供一个可以解决任何问题的神奇服务定位器对象?

最佳答案

是的,你可以。只需依赖 IComponentContext :

public class MyComponent
{
IComponentContext _context;
public MyComponent(IComponentContext context)
{
_context = context;
}

public void DoStuff()
{
var service = _context.Resolve(...);
}
}

根据评论更新:IComponentContext 注入(inject) MyComponent 取决于解析 MyComponent 的范围。因此,重要的是要考虑在什么生命周期范围内注册 MyComponent。例如。使用 InstancePerLifetimeScope,上下文将始终解析到依赖于 MyComponent 的服务所在的相同范围。

关于c# - 使用 Autofac 作为服务定位器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7190795/

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