gpt4 book ai didi

c# - 有没有办法使用 IoC 容器向辅助类注入(inject)依赖项?

转载 作者:行者123 更新时间:2023-12-04 17:35:13 25 4
gpt4 key购买 nike

我有一个助手类,我正在我的一个服务中实例化它。我想知道是否有办法使用 IoC 容器注入(inject)存储库并将其作为属性而不是从服务传递自动连接的存储库。

这是因为这个助手类正在实现一个接口(interface),而其他实现了这个的类可能不一定需要在那个特定的方法中采用它。

我正在尝试在不更改大量代码的情况下解决此问题。

public class SomeService : Service
{
public IRepository Repo { get; set; }
public object Get(Request req)
{
var helper = new SomeServiceHelper();
var somethingFromHelper = helper.GetSomething();

var SomethingFromRepo = Repo.GetSomethingElse();

.
.
.
}

public object Post(Request req)
{
Repo.SaveSomething(something);
}
}

public class SomeServiceHelper : IHelper
{
public IRepository Repo { get; set; }
public object GetSomething()
{
Repo.GetSomethingFromDB();

.
.
.
}
}

最佳答案

This is because this helper class is implementing an interface and other classes that does implement this might not necessarily need to take that in that specific method.



您不需要针对接口(interface)注册您的助手类,您只需注册具体类型,例如:
container.RegisterAutoWired<SomeServiceHelper>();

或者:
container.Register(c => new SomeServiceHelper {
Repo = c.Resolve<IRepository>(),
});

然后你可以在你的服务中注入(inject)一个或两个:
public class SomeService : Service
{
public SomeServiceHelper Helper { get; set; }
public IRepository Repo { get; set; }
}

关于c# - 有没有办法使用 IoC 容器向辅助类注入(inject)依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56960766/

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