Я следовал найденному примеру здесь .У меня есть следующий класс:
`` `открытый класс FileServiceRequestMappingAction: IMappingAction {private readonly IHttpContextAccessor _httpContextAccessor;
public FileServiceRequestMappingAction(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
public void Process(FileServiceRequest source, FileSearchRequest destination)
{
try
{
destination.Filter = "somevalue";
var storageType = "somestoragetype";
if (_httpContextAccessor.HttpContext.Request.Path.Value.ToLower().Contains("/patha/"))
{
storageType = "someothertypeofstorage";
}
if (!string.IsNullOrWhiteSpace(destination.Filter))
{
destination.Filter += $" and storageType eq {storageType}";
}
else
{
destination.Filter += $"storageType eq {storageType}";
}
}
catch (Exception ex)
{
throw new TranslationException($"Error in filter. {ex.Message}");
}
}
}
` ``
В моем запуске у меня есть:
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddAutoMapper(typeof(FileServiceRequestMappingAction).Assembly);
Когда я запускаю приложение и выполняю свой запрос API, где вызывается карта, я получаю следующую ошибку:
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor)
at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at System.Activator.CreateInstance(Type type)
at AutoMapper.Configuration.MappingExpression`2.<>c__60`1.<AfterMap>g__AfterFunction|60_0(TSource src, TDestination dest, ResolutionContext ctxt) in C:\projects\automapper\src\AutoMapper\Configuration\MappingExpression.cs:line 450
at lambda_method(Closure , FileServiceRequest , FileSearchRequest , ResolutionContext )
at lambda_method(Closure , Object , Object , ResolutionContext )
at AutoMapper.Mapper.AutoMapper.IMapper.Map[TDestination](Object source) in C:\projects\automapper\src\AutoMapper\Mapper.cs:line 207
Ошибкасообщение:
No parameterless constructor defined for this object.
Я уверен, что я делаю что-то не так.Обратите внимание, что в файле startup.cs я попробовал services.AddAutoMapper (typeof (Startup) .Assembly);также.Это тоже не работает.
Есть какие-нибудь мысли, кто-нибудь?
Спасибо.