Automapper 字符串到 Guid 不起作用
Automapper String to Guid not working
我想创建一个泛型类型转换器,根据转换方向(DTO > VM 或 VM > DTO)将 Guid 转换为字符串,将字符串转换为 Guid。此外,一些属性具有可为 null 的 Guid,因此我认为我也可以处理它。我尝试了以下方法,但运气不佳:
CreateMap<string, Guid?>().ConvertUsing(value => !string.IsNullOrEmpty(value) ? Guid.Parse(value) : (Guid?)null);
CreateMap<string, Guid>().ConvertUsing(guid => Guid.Parse(guid));
和
CreateMap<Guid?, string>().ConvertUsing(guid => guid?.ToString("N"));
CreateMap<Guid, string>().ConvertUsing(guid => guid.ToString("N"));
关于如何让它工作有什么建议吗?
这适用于我的电脑:
Mapper.Initialize(cfg =>
{
cfg.CreateMap<string, Guid>().ConvertUsing(s => Guid.Parse(s));
cfg.CreateMap<string, Guid?>().ConvertUsing(s => String.IsNullOrWhiteSpace(s) ? (Guid?)null : Guid.Parse(s));
cfg.CreateMap<Guid?, string>().ConvertUsing(g => g?.ToString("N"));
cfg.CreateMap<Guid, string>().ConvertUsing(g => g.ToString("N"));
});
var guid = Guid.NewGuid();
var guidStr = Guid.NewGuid().ToString();
var guid1 = Mapper.Map<Guid>(guidStr); // The guid is parsed successfully
var guid2 = Mapper.Map<Guid?>(null); // Gets null as expected
var str1 = Mapper.Map<string>(guid); // The guid is serialized successfully
var str2 = Mapper.Map<string>(null); // Gets null as expected
您是否使用 Initialize
方法这样配置您的 Mapper?
它也可以使用 Mapper.Instance.Map
方法而不是直接使用 Mapper.Map
。
如果默认的字符串格式足够好,默认情况下可以双向使用,不需要类型转换器。
我想创建一个泛型类型转换器,根据转换方向(DTO > VM 或 VM > DTO)将 Guid 转换为字符串,将字符串转换为 Guid。此外,一些属性具有可为 null 的 Guid,因此我认为我也可以处理它。我尝试了以下方法,但运气不佳:
CreateMap<string, Guid?>().ConvertUsing(value => !string.IsNullOrEmpty(value) ? Guid.Parse(value) : (Guid?)null);
CreateMap<string, Guid>().ConvertUsing(guid => Guid.Parse(guid));
和
CreateMap<Guid?, string>().ConvertUsing(guid => guid?.ToString("N"));
CreateMap<Guid, string>().ConvertUsing(guid => guid.ToString("N"));
关于如何让它工作有什么建议吗?
这适用于我的电脑:
Mapper.Initialize(cfg =>
{
cfg.CreateMap<string, Guid>().ConvertUsing(s => Guid.Parse(s));
cfg.CreateMap<string, Guid?>().ConvertUsing(s => String.IsNullOrWhiteSpace(s) ? (Guid?)null : Guid.Parse(s));
cfg.CreateMap<Guid?, string>().ConvertUsing(g => g?.ToString("N"));
cfg.CreateMap<Guid, string>().ConvertUsing(g => g.ToString("N"));
});
var guid = Guid.NewGuid();
var guidStr = Guid.NewGuid().ToString();
var guid1 = Mapper.Map<Guid>(guidStr); // The guid is parsed successfully
var guid2 = Mapper.Map<Guid?>(null); // Gets null as expected
var str1 = Mapper.Map<string>(guid); // The guid is serialized successfully
var str2 = Mapper.Map<string>(null); // Gets null as expected
您是否使用 Initialize
方法这样配置您的 Mapper?
它也可以使用 Mapper.Instance.Map
方法而不是直接使用 Mapper.Map
。
如果默认的字符串格式足够好,默认情况下可以双向使用,不需要类型转换器。