Я пытаюсь вставить 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?
Редактировать
Подробнее о моем заводском методе:
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.....
};
}
Редактировать 2
Исходя из ответа Ремо, одним из возможных решений является использование цикла foreach для привязки моделей представлений по одной:
foreach (var fooViewModel in GetFooViewModels())
{
Bind<FooViewModel>().ToConstant(fooViewModel);
}