У меня есть проект MyProjectReport (сборка).В этом проекте у меня есть класс MyMainReport.В этом классе (я использую шаблон репозитория в сборке) у меня есть два интерфейса.Один интерфейс называется IReportRepository1 и IReportRepository2.В MyMainReport мой конструктор выглядит следующим образом:
public MyMainReport(IReportRepository1 reportRepository1 , IReportRepository1 reportRepository2 )
{
this.reportRepository1 = reportRepository1 ;
this.reportRepository2 = reportRepository2 ;
}
.У меня есть NinjectModule следующим образом:
public class DINinjectServiceModule : NinjectModule
{
public override void Load()
{
Bind<IReportRepository1 >()
.To<ReportRepository>();
Bind<IReportRepository2 >()
.To<ReportRepository2>();
}
}
.Обычно приложение инициализирует ядро в глобальном asax.Пример одного из них в веб-сервисе WCf может быть следующим:
public class Global : NinjectWcfApplication
{
protected override IKernel CreateKernel()
{
return new StandardKernel(new DINinjectServiceModule());
}
}
Таким образом, мои репозитории будут загружаться автоматически.Однако, поскольку у меня есть сборка, у меня нет файла Global.asax.
Я создал класс, называемый селектором отчетов.я использую шаблон декоратора для динамической загрузки моих отчетов.
public class ReportSelector : IReportBuilder
{
IReportBuilder buildareport;
public ReportSelector(IReportBuilder buildareport)
{
this.buildareport = buildareport;
}
public void CreateDocument()
{
buildareport.CreateDocument();
}
}
Ниже приведен порядок вызова конструктора отчетов без использования конструктора IOC.
IReportBuilder buildrep = new ReportSelector(new MyMainReport.ReportBuilder.MyMainReport());
BuildReport(buildrep);
Однако он выглядитдля меня, чтобы передать в моем хранилище интерфейсов.Это не загружает их динамически.Как мне сделать это?для меня вышеупомянутый вызов декоратора будет похож на мой application_start в моем файле Global.asax.Как бы я мог загрузить свои репозитории в сборку / проект?
Спасибо Remo Gloor!Я подумал, что мне нужна фабрика, подобная фабрике для контроллера в MVC.Однако я не уверен, как мне это сделать.Большинство примеров имеют либо расширение, либо используют базовый класс, такой как Controller.Я пишу веб-сервис, который будет выполнять пакетный процесс.Использование веб-службы не является моим выбором для этого процесса, хотя я знаю, что некоторые люди любят использовать веб-службы для этого.У меня есть сборка, которая создает динамические PDF-файлы, и я отправлю эти PDF-файлы по электронной почте.Я хотел бы использовать модуль Ninject для загрузки моих репозиториев, как в проекте MVC.Я не уверен, как сделать это в автономной сборке.В настоящее время у меня есть Reportselector, как указано выше, это будет похоже на корень запуска любого приложения.В моем веб-сервисе есть метод BuildAllReports, который может вызывать любое приложение для использования сервиса.Таким образом, когда вызывается BuildAllReports, выполняется пакетный процесс.Можете ли вы привести пример использования Ninject в сборке, как уже упоминалось?Спасибо