Ninject:将某物绑定到自身是什么意思?

7

Ninject具有自我绑定的功能,例如Bind<Samurai>().ToSelf();

我读过这个,但我不明白它的重要性或者如何有用。欢迎任何评论。

2个回答

8
如果Ninject发现需要创建一个对象,并且它有一个构造函数,其中包含一个Samurai参数,则不知道如何实例化它。
但是,当您使用Bind<Samurai>().ToSelf();时,Ninject就知道需要创建一个Samurai并将其传递给Samurai参数。
如果没有这个绑定,那么Ninject就不知道该传递什么,例如可能有一个SamuraiSubClass类型。但通过明确地表示当Ninject发现需要为一个Samurai参数创建一个Samurai时,Ninject就知道该怎么做了。

为什么不直接明确指定要绑定的侍呢? - Cemre Mengü
3
Bind<Samurai>().To<Samurai>();Bind<Samurai>().ToSelf(); 是等价的,只是前者更易于理解。 - SynerCoder
2
好的,我明白了,所以你不仅可以注入接口,还可以注入具体类型。 - Cemre Mengü
确实,或抽象类 - SynerCoder

3

我经常使用.WithConstructorArgument()。 Bind<Samurai>().ToSelf().WithConstructorArgument("owner", user); 这是一种很好的方法,在注入Samuari构造函数时提供对象。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接