繁体   English   中英

自动映射公历日期时间到波斯日期时间

[英]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);
    }
}

我看到错误:

表达式树可能不包含使用可选 arguments 的调用或调用

为什么是这样?

根据错误消息,您的映射代码不允许包含使用可选 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('-')));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM