В моем предыдущем проекте я использовал Ninject для достижения автогенерации действий. У меня был общий интерфейс ActionsFactory, который выглядел так:
public interface IActionsFactory
{
TAction GetAction<TAction>();
}
Ninject был настроен для привязки этого интерфейса к фабрике:
kernel.Bind<IActionsFactory>().ToFactory(() => new GenericFactoryMethodInstanceProvider());
public class GenericFactoryMethodInstanceProvider : StandardInstanceProvider
{
protected override string GetName(MethodInfo methodInfo, object[] arguments)
{
return null;
}
}
При этом я мог ссылаться на своих контроллерах только на IActionFactory
, без необходимости ссылаться на все действия, например:
public class SomeController : ApiController
{
private readonly IActionsFactory
public SomeController(IActionsFactory actionsFactory)
{
this.actionsFactory = actionsFactory;
}
[HttpGet]
public async Task<Foo> GetFoo()
{
retutn await actionsFactory.GetAction<IFooAction>().GetSomeFoo();
}
}
Вопрос: как мне добиться чего-то похожего с Lightinject?