[英]Injection of multiple parameters of the same type in Ninject
可以說我們有一個這樣的X類:
class X
{
X(Z a, Z b)
{ }
}
Z類將具有Y依賴項:
class Z
{
Z(Y c)
{ }
}
綁定這些類的正確方法是什么,以便將兩個Z實例(每個都有一個不同的Y實例)注入X?
我知道這些與上下文綁定有關,但是我不確定該怎么做。
編輯:
Y類為:
class Y
{
Y(string someString)
{ }
}
我也希望Y的兩個實例具有不同的字符串。
謝謝
如果您對X和Y的綁定沒有作用域,那么每次從內核請求一個X對象時,它將使用兩個唯一的Z對象(每個對象都有一個唯一的Y實例)構造。 默認情況下會發生這種情況。
傳遞實現與IEnumerable相同的接口的依賴項。 否則,如果一個接口有多個綁定,Ninject會大喊大叫。 使用.WithConstructorArgument()方法定義您的字符串。 如果字符串不是常量,則可以改用.ToMethod()並在運行時確定字符串。
public class Z
{
public Z(IEnumerable<Y> dependencies)
{
if (dependencies == null) throw new ArgumentNullException("dependencies");
_dependencies = dependencies;
}
}
static void Main() // or other entry point
{
var kernel = new StandardKernel();
kernel.Bind<Z>().To<ZImplementation>();
kernel.Bind<Y>().To<YImplementation1>().WithConstructorArgument("c", "string to inject 1");
kernel.Bind<Y>().To<YImplementation2>().WithConstructorArgument("c", "string to inject 2");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.