Я решил начать использовать Ninject и столкнуться с проблемой. Скажем, у меня есть следующий сценарий.
У меня есть интерфейс IService
и 2 класса, реализующие этот интерфейс. А также у меня есть класс, у которого есть конструктор, получающий IService и int. Как я могу создать экземпляр этого класса с помощью Ninject (я не хочу использовать этот int, я хочу передавать его каждый раз, когда я получаю экземпляр)?
Вот несколько примеров, иллюстрирующих ситуацию:
interface IService
{
void Func();
}
class StandardService : IService
{
public void Func()
{
Console.WriteLine("Standard");
}
}
class AlternativeService : IService
{
public void Func()
{
Console.WriteLine("Alternative");
}
}
class MyClass
{
public MyClass(IService service, int i)
{
this.service = service;
}
public void Func()
{
service.Func();
}
IService service = null;
}
class Program
{
static void Main(string[] args)
{
IKernel kernel = new StandardKernel(new InlineModule(
x => x.Bind<IService>().To<AlternativeService>(),
x => x.Bind<MyClass>().ToSelf()));
IService service = kernel.Get<IService>();
MyClass m = kernel.Get<MyClass>();
m.Func();
}
}