gpt4 book ai didi

c# - 使用 Ninject 初始化具有初始值的字段

转载 作者:太空宇宙 更新时间:2023-11-03 13:51:07 24 4
gpt4 key购买 nike

我目前正在尝试研究如何使用 Ninject 为某些字段设置初始值。

我有这样的东西:

public class SomeClass
{
private ISomething _something;

public SomeClass(string someParam)
{

}

public void DoAThing()
{
_something.DoSomething();
}
}

我的困境在于将 _something 设置为初始值,因为我不希望类知道要使用哪个 ISomething 的默认实现, 有没有办法在 Ninject 中实现这一目标?

我应该补充一点,通过构造函数传递初始值不是一种选择。

我还应该补充一点,这是在一个类库中,所以任何关于如何以及何时设置内核和注入(inject)的信息都会很棒 :)

详细说明:似乎人们可能会感到困惑,我并不是要将 ISomething 放入类中(它不是依赖项),而是 ISomething 的默认实现是依赖项,这是为什么我选择服务定位器模式,对于实际的依赖项,我当然会将它们放在构造函数中。

谢谢。

最佳答案

是的,高耦合的类不是很好,因此依赖抽象是一个不错的选择。但是隐藏你的依赖关系并不是很好的解决方案。使它们对您的类的客户端可见,并使用依赖注入(inject)为您的类提供依赖项的具体实现:

public class SomeClass
{
private ISomething _something;

public SomeClass(ISomething something, string someParam)
{
_something = something;
}

public void DoAThing()
{
_something.DoSomething();
}
}

同时考虑创建工厂,它将为创建的 SomeClass 对象提供 ISomething 的默认实现。

关于c# - 使用 Ninject 初始化具有初始值的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13667126/

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