Раньше я использовал Castle в качестве IoC, но у меня была проблема с использованием Nhibernate / Castle (IoC) в том же проекте, поэтому я перешел в Ninject. Теперь, чтобы перейти к вопросу, у меня есть этот класс:
class CustomModule : NinjectModule
{
public override void Load()
{
Bind<Interfaces.ICafe>().To <Concrete.Tea>();
}
}
Concrete
- это отдельный проект, а Interfaces.ICafe
- это другой проект. С помощью Castle я давал разработчику интерфейсную DLL-библиотеку и просил его реализовать новый конкретный объект, реализующий этот интерфейс, а затем настроить его с помощью app.config, поэтому независимо от того, какое имя класса он реализует, он все равно работает, потому что он должен написать это в app.config, так что если он сделает это как Concrete.Coffee
, он все равно будет работать.
Но с Ninject он должен сделать бетон с тем же именем класса "Чай", чтобы заставить его работать, иначе он не будет работать, потому что он жестко закодирован.
Я новичок в Ninject и знаю, что, возможно, чего-то не хватает?