Я работаю над проектом, в котором я работаю с данными модели погоды.Модели разные, но логика вызовов функций внутри каждой модели одинакова.У каждой модели есть данные, сгенерированные об этом, а затем дана команда «выполнить».
У меня есть служба, которая представляет собой запрос на загрузку данных, которые ей необходимо выполнить, перед тем, как вызывать функциюRun
называется.Эта run
функция является общей для всех моделей, поэтому я разработал один интерфейс под названием IIndividualModelRunService
.Но я столкнулся с проблемой.Эта проблема существует независимо от того, с какой из моделей вы работаете.
Раньше у меня был этот конструктор: -
public HRRRModelQueryService(IHRRRModelQueryRequestService hrrrModelQueryRequestService, IIndividualModelRunService modelRunService)
{
_hrrrModelQueryRequestService = hrrrModelQueryRequestService;
_modelRunService = modelRunService;
}
IIndividualModelRunService имеет три реализации, по одной для каждой модели, которые делаютразные специфические для модели вещи.Через некоторое время я заметил, что, кажется, только что вызывается один из трех, независимо от того, какой путь я прошел в проекте, например, через код Model1, код Model2 или код Model3.
Выше компилируются иработает, хотя и неправильно.
Я пытался обновить конструктор до этого, передавая тип в `IIndividualModelRunService, в надежде указать, что служба, которую я хочу вызвать, поможет: -
public HRRRModelQueryService(IHRRRModelQueryRequestService hrrrModelQueryRequestService, IIndividualModelRunService<HRRRModelRunService> modelRunService)
{
_hrrrModelQueryRequestService = hrrrModelQueryRequestService;
_modelRunService = modelRunService;
}
Но теперь я получаю это исключение при загрузке проекта, и я подозреваю, что это то, что я не регистрирую правильно: -
Ни один из конструкторов не найден с 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder'on type' ModelRunDownloader.Domain.GFS.GFSModelQueryService 'может быть вызван с доступными службами и параметрами: Невозможно разрешить параметр' ModelRunDownloader.Domain.ModelService.IIndividualModelRunService'1 [ModelRunDownloader.Domain.GliserQueryServiceMicrosoft.GFS.GS.MRS.SystemRu.SF.ctor (ModelRunDownloader.Domain.GFS.IGFSModelQueryRequestService, ModelRunDownloader.Domain.который работает правильно, так как я протестировал это, а затем написал следующие команды: -
var assemblyList = assemblies.ToArray();
builder.RegisterAssemblyModules(assemblies);
builder.RegisterByAttributes(assemblies);
builder.RegisterInstance(Assembly.GetExecutingAssembly()).As<_Assembly>();
return builder.Build();
Мне просто интересно, нужно ли мне здесь что-то вручную указывать из-за передачи этого типа в интерфейс,или я нахожусь на неправильном маршруте полностью?Совершенно новый для autofac, поэтому любые отзывы очень ценятся!