Я сделаю пару предположений здесь.
- В вашем проекте Foo.Domain есть интерфейс IBar, а в вашем проекте Foo.Data есть конкретный класс BarClass.
- Вы фактически ссылаетесь на проект Foo.Domain в своем проекте Foo.Data, потому что BarClass реализует IBar.
Самое простое, что нужно сделать с Ninject, - это создать новый класс в Foo.Data, производный от StandardModule Ninject:
internal class BarModule : StandardModule {
public override void Load() {
Bind<IBar>()
.To<BarClass>();
}
}
Затем этот класс устанавливает привязку запросов IBar к конкретному классу BarClass. Это ваш XML-эквивалент.
Следующим шагом является создание ядра Ninject (он же «контейнер») и предоставление ему этого модуля (т.е. этой конфигурации). От того, где вы это делаете, во многом зависит то, какое приложение вы создаете. В общих чертах, вы обычно настраиваете ядро в логической точке входа или в разделе «запуска» вашего кода. Если бы это было консольное или настольное приложение Windows, это, вероятно, было бы одним из первых действий, которые выполняет функция main ().
Код будет выглядеть так:
var modules = new IModule[] {
new BarModule()
};
var kernel = new StandardKernel(modules);
В этот момент, когда вы делаете что-то вроде этого:
var barObj = kernel.Get<IBar>()
Переменная barObj ссылается на экземпляр BarClass.
В общем, я вполне мог бы не иметь полного понимания всех нюансов вашего приложения - например, сборки загружаются динамически и т. д. Надеюсь, это все равно поможет.