2017-11-29 6 views
0

ドロップダウンリストで使用される表示タイトルの翻訳を含む、ネストされたEntity Frameworkオブジェクトがあります。ソースオブジェクト全体から表示タイトルを解決しようとしていますが、正しい構文を理解できません。ここでAutoMapper IMemberValueResolverソースオブジェクトからメンバプロパティへのマッピングの問題

リゾルバです:

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; 
    } 
} 

そして、これは設定マップである:

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

私はソースとして全体lstIssueTypeを渡す必要があるが、私はどのように把握することはできませんそうするために。

+0

[実施例](https://でGitHubの。オートマッパ/オートマッパ/検索?utf8 =%E2%9C%93&q = IMemberValueResolver&type =)。 –

答えて

0

溶液誰もが興味を持っている場合は、以下であり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; 
    } 
} 

、一致する設定マップ:

cfg.CreateMap<lstIssueType, IssueType>() 
    .ForMember(d => d.Description, opts => opts 
     .ResolveUsing<IssueTypeResolver>(src => src.refResourceType)); 
関連する問題