automapper 公历日期时间到波斯日期时间
automapper gregorian datetime to persian datetime
为什么我不能使用下面的例子?
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap<SiteSetting, dto_site_setting>()
.ForMember(dto => dto.LastUpdate, opt => opt.MapFrom(src =>
src.LastUpdate.Value.ToShamsiDate()));
}
}
public static class XDate
{
public static string ToShamsiDate(this DateTime _date, char separator = '-')
{
var year = pcal.GetYear(_date);
var month = pcal.GetMonth(_date).ToString("00");
var day = pcal.GetDayOfMonth(_date).ToString("00");
if (separator == '-')
return string.Format("{0}-{1}-{2}", year, month, day);
else
return string.Format("{0}/{1}/{2}", year, month, day);
}
}
我看到错误:
An expression tree may not contain a call or invocation that uses
optional arguments
这是为什么?
根据错误消息,您的映射代码不允许包含使用可选参数的方法调用。但是您的 ToShamsiDate()
方法有一个可选参数(char separator = '-'
),您实际上是在使用可选参数(通过不显式传递任何内容)从映射代码中调用该方法。
更改方法签名以使可选参数成为必需参数 -
public static string ToShamsiDate(this DateTime _date, char separator)
并在您的映射代码中显式传递参数 -
CreateMap<SiteSetting, dto_site_setting>()
.ForMember(dto => dto.LastUpdate, opt => opt.MapFrom(src =>
src.LastUpdate.Value.ToShamsiDate('-')));
为什么我不能使用下面的例子?
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap<SiteSetting, dto_site_setting>()
.ForMember(dto => dto.LastUpdate, opt => opt.MapFrom(src =>
src.LastUpdate.Value.ToShamsiDate()));
}
}
public static class XDate
{
public static string ToShamsiDate(this DateTime _date, char separator = '-')
{
var year = pcal.GetYear(_date);
var month = pcal.GetMonth(_date).ToString("00");
var day = pcal.GetDayOfMonth(_date).ToString("00");
if (separator == '-')
return string.Format("{0}-{1}-{2}", year, month, day);
else
return string.Format("{0}/{1}/{2}", year, month, day);
}
}
我看到错误:
An expression tree may not contain a call or invocation that uses optional arguments
这是为什么?
根据错误消息,您的映射代码不允许包含使用可选参数的方法调用。但是您的 ToShamsiDate()
方法有一个可选参数(char separator = '-'
),您实际上是在使用可选参数(通过不显式传递任何内容)从映射代码中调用该方法。
更改方法签名以使可选参数成为必需参数 -
public static string ToShamsiDate(this DateTime _date, char separator)
并在您的映射代码中显式传递参数 -
CreateMap<SiteSetting, dto_site_setting>()
.ForMember(dto => dto.LastUpdate, opt => opt.MapFrom(src =>
src.LastUpdate.Value.ToShamsiDate('-')));