Я пытаюсь извлечь привязку интерфейсов к классам, которые реализуют их, и экземпляр экземпляра в отдельный проект.
Это то, что у меня есть до сих пор:
public class DependencyModule : NinjectModule
{
public override void Load()
{
Bind<IMyClass>().To<MyClass>();
}
}
Это мой модуль. И в этом классе я хочу создать статический метод, который при передаче любого интерфейса пытается найти класс, который привязывается к нему и возвращает экземпляр его:
public static class Resolver<T, U>
{
public static T GetInstance<T>(U requestedInterfaceInstance)
{
var kernel = new StandardKernel(new DependencyModule());
return kernel.Get<requestedInterfaceInstance>();
}
}
Итак, я предполагаю, что мне нужны два параметра типа? Один для возвращаемого типа объекта, который я хочу вернуть (например, экземпляр MyClass), и один для моего параметра метода, который в этом случае был бы (IMyClass).
Как я могу добиться этого лучше? Благодарю.
kernel.Get<>
- для корневого компонента. Все остальные компоненты вводятся в корневой компонент.