Я нашел способ сделать упорядоченные мульти-привязки, потому что мне это тоже нужно:
(по общему признанию, очень похоже на мой ответ здесь: https://stackoverflow.com/a/56306527/50088)
// Binding
public sealed class FooModule: NinjectModule
{
public opverride void Load()
{
Bind<IReadOnlyList<IFoo>>().ToMethod(c=>new IFoo[]
{
c.Kernel.Get<FooType1>(),
c.Kernel.Get<FooType2>(),
...
});
}
}
// Injection target
public class InjectedClass {
public InjectedClass(IReadOnlyList<IFoo> foos) { ;}
}
Я согласен, чтопросто указание, что будущие версии сохранят порядок объявления, является лучшим решением, но этот обходной путь работает.
Я хотел бы создать дочерний объект c в контексте c, поэтому Get знал бы, что он вводится вInjectedClass, но я не мог понять, как это сделать.