С помощью Ninject вы можете зарегистрировать такую привязку:
Bind(typeof(IQueryHandler<,>)).To(typeof(QueryHandler<,>));
Но в моем случае я не знаю имени фактического класса. Все, что я знаю, это то, что он реализует определенный интерфейс.
Так, например, предположим, что у меня есть следующее:
public class CreatePageQueryHandler : IQueryHandler<CreatePage, string>
{
public string Retrieve(CreatePage query)
{ ... }
}
Будет только один класс, который реализует интерфейс с этими общими параметрами: IQueryHandler<CreatePage, string>
Есть ли способ с Ninject динамически получить экземпляр класса? Что-то типа:
kernel.Get<IQueryHandler<CreatePage, string>>(); // returns instance of: CreatePageQueryHandler
Обратите внимание:
Я не хочу вручную bind
делать это в методе RegisterServices
. Я ищу динамический способ получить экземпляр класса.