首页 文章

自定义类型转换器(AutoMapper)和.NET Core

提问于
浏览
1

我使用以下指南使用我的.NET Core Web App(DI)设置AutoMapper:https://dotnetcoretutorials.com/2017/09/23/using-automapper-asp-net-core/

一切正常,花花公子 - 直到我想使用自定义类型转换器 . 我做了以下事情:

public class TimeSpanConverter : ITypeConverter<string, TimeSpan>
{
    public TimeSpan Convert(string source, TimeSpan destination, ResolutionContext context)
    {
        return TimeSpan.Parse(source);
    }
}

然后使用新的转换器:

CreateMap<string, TimeSpan>().ConvertUsing(new TimeSpanConverter());

问题是它没有被调用!我已经尝试将它移出项目之外的一个简单的控制台应用程序没有DI,它在那里工作正常,所以它必须是如何设置 . 已经浏览了很多指南,但我最后一片空白 .

我的映射配置文件是:

public class MappingProfile : Profile
{
    public MappingProfile()
    {
        // Add as many of these lines as you need to map your objects
        CreateMap<string, TimeSpan>().ConvertUsing(new TimeSpanConverter());
        CreateMap<Channel, ChannelDto>();
        CreateMap<Location, LocationDto>();
        CreateMap<LocationDto, Location>();
        CreateMap<OperatingSchedule, OperatingScheduleDto>();
        CreateMap<OperatingSchedule, AddOperatingScheduleRequest>();
        CreateMap<AddOperatingScheduleRequest, OperatingSchedule>();
    }

    public class TimeSpanConverter : ITypeConverter<string, TimeSpan>
    {
        public TimeSpan Convert(string source, TimeSpan destination, ResolutionContext context)
        {
            return TimeSpan.Parse(source);
        }
    }
}

在ConfigureServices下我有:

services.AddSingleton<HttpClient>();
services.AddTransient<ITypeConverter<string, TimeSpan>, TimeSpanConverter>();
services.AddTransient<IConfigurationRepository, ConfigurationRepositorySql>();
services.AddTransient<IDataStoreRepository, DataStoreRepositoryInflux>();
services.AddTransient<ITokenService, TokenService>();
services.AddMvc();
services.AddAutoMapper();

1 回答

  • -1

    解决!事实证明,根据第一个指南,一切都确实在工作和设置 . 我在属性中输入了一个拼写错误,导致它无法映射 . 自我注意:非常勤于命名......

相关问题