我正在尝试注入IEnumerable
使用 Ninject 进入构造函数。
我的构造函数如下所示:
public MatrixViewModel(IEnumerable<FooViewModel> fooViewModels)
{
_fooViewModels = fooViewModels;
}
我的 Ninject 模块如下所示:
public class MainModule : NinjectModule
{
public override void Load()
{
Bind<IEnumerable<FooViewModel>>()
.ToMethod(context => GetFooViewModels())
.InSingletonScope(); // this binding is not working
}
private IEnumerable<FooViewModel> GetFooViewModels()
{
// returns a bunch of foo view models
}
}
这似乎不起作用。我没有收到任何错误。 Ninject 只是从不使用绑定,并且传递到构造函数的值基本上只是一个空的默认值。
你如何注入IEnumerable
与 Ninject?
Edit
有关我的工厂方法的更多详细信息:
private IEnumerable<FooViewModel> GetFooViewModels()
{
return new[]
{
new FooViewModel
{
Bar = new BarViewModel
{
X = 1,
Y = 2
},
Misc = "Hello"
},
new FooViewModel
{
Bar = new BarViewModel
{
X = 3,
Y = 4
},
Misc = "Goodbye"
},
// etc.....
};
}
Edit 2
根据 Remo 的回答,一种可能的解决方案是使用 foreach 循环一次绑定一个视图模型:
foreach (var fooViewModel in GetFooViewModels())
{
Bind<FooViewModel>().ToConstant(fooViewModel);
}