【发布时间】:2017-07-27 00:53:24
【问题描述】:
我正在尝试使用 Automapper 将我的所有 DateTimes 从 UTC 转换为本地时间,但我需要将接口注入 ITypeConverter...当我运行应用程序时收到此错误:MissingMethodException: No为此对象定义的无参数构造函数。
我认为问题出在依赖注入代码上!
谁能帮帮我?
用户存储库:
public class UserRepository : IUserRepository
{
private static readonly MapperConfiguration Config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<User, User>();
cfg.CreateMap<DateTime?, DateTime?>().ConvertUsing<UtcToLocalConverter>();
});
public List<User> GetById(string[] ids)
{
var result = BuildQuery().Where(w => ids.Contains(w.UserName)).ToList();
var mapper = Config.CreateMapper();
return mapper.Map<List<User>>(result); // Throws error !!!
}
#region Helper
private IQueryable<User> BuildQuery()
{
return Settings.EpedDb.User;
}
#endregion
}
转换器
public class UtcToLocalConverter : ITypeConverter<DateTime?, DateTime?>
{
public UtcToLocalConverter(IBaseSettings baseClass) // I tried to inject here!!!
{
Settings = baseClass;
}
private IBaseSettings Settings { get; }
public DateTime? Convert(DateTime? source, DateTime? destination, ResolutionContext context)
{
if (source == null) return null;
var tzi = TimeZoneInfo.FindSystemTimeZoneById(Settings.UserData.TimeZone);
return TimeZoneInfo.ConvertTime(DateTime.SpecifyKind((DateTime)source, DateTimeKind.Utc), tzi);
}
}
【问题讨论】:
-
请不要将代码发布为截图图像。您可以将相关代码复制并粘贴到您的问题中吗?
-
@NateBarbettini 感谢您的建议!您对此有何看法?
标签: dependency-injection asp.net-core .net-core automapper typeconverter