Скрытие типов в разных слоях с помощью Ninject - PullRequest
1 голос
/ 16 мая 2011

У меня есть класс, в который Ninject внедряет зависимости.Один из внедренных типов живет в другой сборке, чем Ninject.Однако модуль зарегистрирован в Assembly1.

/*Assembly1.Dll (Logical layer)*/
internal class InternalType {}

public class Gobblin {

  InternalType _iType;

  internal Gobblin(InternalType iType) {
    _iType = iType;
  }
}

public class CommonModule : NinjectModule {

  public override void Load() {

    Bind<IInternalType>()
         .To<InternalType>()
         .InRequestScope();
  }

}
/*End assembly1 code*/

Моя другая сборка - это веб-приложение MVC.Один из моих контроллеров нуждается в классе Gobblin, но привязка не выполняется из-за отсутствия конструкторов Ninject.

Я понимаю, что Ninject не имеет доступа к внутреннему конструктору класса Gobblin, но я предположил, что модулькоторый зарегистрировал, что он содержался в той же сборке, с которой он работал бы.

Я мог бы просто нарушить принципы ОО и сделать общедоступный тип InternalType, но я хочу знать, есть ли другой способ первым.Спасибо за ваше время.

1 Ответ

2 голосов
/ 17 мая 2011

Ваша сборка является внешней по отношению к самой Ninject.Конфигурация по умолчанию не допускает внедрения ни одного открытого конструктора, свойств, ... Вы можете изменить конфигурацию.Взгляните на NinjectSettings.

...