Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# AutoMapper IMemberValueResolver源对象到成员属性映射问题_C#_Automapper - Fatal编程技术网

C# AutoMapper IMemberValueResolver源对象到成员属性映射问题

C# AutoMapper IMemberValueResolver源对象到成员属性映射问题,c#,automapper,C#,Automapper,我有一个嵌套的实体框架对象,其中包含下拉列表中使用的显示标题的翻译。我试图从整个源对象解析显示标题,但我无法找出正确的语法 以下是解析程序: public class IssueTypeResolver : IMemberValueResolver<lstIssueType, string, string, string> { public string Resolve(lstIssueType source, string destination, string sourc

我有一个嵌套的实体框架对象,其中包含下拉列表中使用的显示标题的翻译。我试图从整个源对象解析显示标题,但我无法找出正确的语法

以下是解析程序:

public class IssueTypeResolver : IMemberValueResolver<lstIssueType, string, string, string>
{
    public string Resolve(lstIssueType source, string destination, string sourceMember, string destMember, ResolutionContext context)
    {
        // culture override from resources if available
        var cultureCode = context.Options.Items["CultureCode"].ToString();
        if (source.refResourceType != null && source.refResourceType.Resources != null)
        {
            var cultureOverride = source.refResourceType.Resources.FirstOrDefault(r => r.CultureCode == cultureCode);
            if (cultureOverride != null)
            {
                return cultureOverride.ResourceText;
            }
        }

        return source.DisplayTitle;
    }
}
公共类IssueTypeResolver:IMemberValueResolver
{
公共字符串解析(lstsissueType源、字符串目标、字符串源成员、字符串目标成员、ResolutionContext上下文)
{
//来自资源的区域性覆盖(如果可用)
var cultureCode=context.Options.Items[“cultureCode”].ToString();
if(source.refResourceType!=null&&source.refResourceType.Resources!=null)
{
var cultureOverride=source.refResourceType.Resources.FirstOrDefault(r=>r.CultureCode==CultureCode);
如果(cultureOverride!=null)
{
返回cultureOverride.ResourceText;
}
}
返回source.DisplayTitle;
}
}
这是配置图:

cfg.CreateMap<DataAccess.DbModel.lstIssueType, Contract.IssueType>()
    .ForMember(
        d => d.Description, 
        opts => opts.ResolveUsing<IssueType2Resolver, string>(????));
cfg.CreateMap<lstIssueType, IssueType>()
    .ForMember(d => d.Description, opts => opts
        .ResolveUsing<IssueTypeResolver>(src => src.refResourceType));
cfg.CreateMap()
福门博先生(
d=>d.描述,
opts=>opts.ResolveUsing(??);

我需要将整个lstIssueType作为源代码传入,但我不知道怎么做。

如果有人感兴趣,下面的解决方案是使用
IValueResolver
而不是
IMemberValueResolver

public class IssueTypeResolver : IValueResolver<lstIssueType, IssueType, string>
{
    public string Resolve(lstIssueType source, IssueType destination, string member, ResolutionContext context)
    {
        var cultureCode = context.Options.Items["CultureCode"].ToString();
        if (source.refResourceType != null && source.refResourceType.Resources != null)
        {
            var cultureOverride = source.refResourceType.Resources.FirstOrDefault(r => r.CultureCode == cultureCode);
            if (cultureOverride != null)
            {
                return cultureOverride.ResourceText;
            }
        }

        return source.DisplayTitle;
    }
}
公共类IssueTypeResolver:IValueResolver
{
公共字符串解析(lstIssueType源、IssueType目标、字符串成员、ResolutionContext上下文)
{
var cultureCode=context.Options.Items[“cultureCode”].ToString();
if(source.refResourceType!=null&&source.refResourceType.Resources!=null)
{
var cultureOverride=source.refResourceType.Resources.FirstOrDefault(r=>r.CultureCode==CultureCode);
如果(cultureOverride!=null)
{
返回cultureOverride.ResourceText;
}
}
返回source.DisplayTitle;
}
}
和匹配的配置映射:

cfg.CreateMap<DataAccess.DbModel.lstIssueType, Contract.IssueType>()
    .ForMember(
        d => d.Description, 
        opts => opts.ResolveUsing<IssueType2Resolver, string>(????));
cfg.CreateMap<lstIssueType, IssueType>()
    .ForMember(d => d.Description, opts => opts
        .ResolveUsing<IssueTypeResolver>(src => src.refResourceType));
cfg.CreateMap()
.ForMember(d=>d.Description,opts=>opts
.ResolveUsing(src=>src.refResourceType));