gpt4 book ai didi

ninject - 如何通过 Ninject 使用方法注入(inject)?

转载 作者:行者123 更新时间:2023-12-02 21:24:19 25 4
gpt4 key购买 nike

我有一个类需要为其类中的一个方法使用 IRepository。

理想情况下,我希望避免将这种依赖关系解析到类的构造函数中,因此我在 Ninject 中发现了方法级注入(inject),并且想知道这是如何工作的?

我了解如何设置它。我很困惑的是如何调用它?

示例:

class SomeClassThatUsesRepository
{
[Inject]
public void QueryForSomeStuff(IRepository repository)
{
//do some stuff
}
}

我的问题是如何在不指定 IRepository 的情况下调用此方法?

var someClass = Kernel.Resolve<SomeClassThatUsesRepository>();

如果我使用构造函数就可以工作,但我想调用一个方法。

如何使用 Ninject 方法注入(inject)调用方法?

最佳答案

恐怕方法注入(inject)不能以这种方式工作 - 它只是在构造过程中将依赖项注入(inject)对象的方法之一(您可以通过构造函数参数、属性、字段或方法注入(inject)依赖项)。如果您的类通过 Java 风格的 setter 方法(例如

)获取其依赖项,则方法注入(inject)非常有用
public void SetRepository(IRepository repository) { ... }

如果标记了[Inject]属性,则不需要直接调用该方法,而是在初始化时由Ninject调用来传递IRepository 对象转换为已解析的对象。

所以我相信当您解析 SomeClassThatUsesRepository 时,正在调用您的 QueryForSomeStuff 方法。

关于ninject - 如何通过 Ninject 使用方法注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4091238/

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