2016-07-02 9 views
0

機能変換するには、automapperを使用している私はメンバーのautomapper関数呼び出しを使用しますが何の成功、私もブレークポイントを使用してデバッグすることはできませんメンバ関数を含むこの複合オブジェクトに対してオートマッパを使用してマッピングを作成するにはどうすればよいですか?

public ActionResult Index() 
    { 
     Func<int,string> _roleName=t=>{return new RolesDAO().getROLEsByID(t).ROLE_NAME; }; 
     Func<int,string> _STATENAME=t=>{return new StateDAO().getStatesByID(t).STATENAME; }; 
     Func<int,string> _COUNTRYNAME=t=>{return new CountryDAO().getCountrieByID(t).COUNTRYNAME; }; 
     //Func<int,string> _TYPE_NAME=t=>{return new UsersTypeDAO().getUsersTypeByID(t).TYPE_NAME; }; 

     string usertypeName = string.Empty; 
     string RoleName = string.Empty; 
     string StateName = string.Empty; 
     string CountryName = string.Empty; 
     var value = objDAO.getUsers().Select(t => new UsersVM 
     { 
      ACTIVE=t.ACTIVE, 
      ROLENAME=_roleName(t.ROLEID), 
      PROFILE_IMAGE=t.PROFILE_IMAGE, 
      STATEName = _STATENAME(t.STATE), 
      COUNTRYName = _COUNTRYNAME(t.COUNTRY), 
      MOBILE=t.MOBILE, 
      FNAME=t.FNAME, 
      LNAME=t.LNAME, 
      EMAIL=t.EMAIL, 
       CITY=t.CITY, 
      USERTYPENAME = _TypeName(t.USER_TYPE_ID), 
      ADDRESS=t.ADDRESS, 
     }).ToList(); 

     return View("list", value); 
    } 

を下回っています。このオブジェクトを別のオブジェクトに変換する方法を提案してください。私は多くのブログ記事を調べましたが、私はそれを私の問題に関連付けることはできません。

私が代わりに匿名の種類を作成し、その中に関数を使用して、この変換にautomapper使用したいすべて。

私は.forMember機能を使用しようとしましたが、それは変換されたプロパティに対してnullを返す機能していません。プロフィールクラスは以下の通りです:

public class UsersDM_TO_VM : Profile 
{ 
    public UsersDM_TO_VM() 
    { 
     Func<int,string> _roleName=t=>{return new RolesDAO().getROLEsByID(t).ROLE_NAME; }; 
     Func<int,string> _STATENAME=t=>{return new StateDAO().getStatesByID(t).STATENAME; }; 
     Func<int,string> _COUNTRYNAME=t=>{return new CountryDAO().getCountrieByID(t).COUNTRYNAME; }; 
     Func<int,string> _TYPE_NAME=t=>{return new UsersTypeDAO().getUsersTypeByID(t).TYPE_NAME; }; 
     CreateMap<STBL_ADMINUSERS, UsersVM>() 
      .ForMember(
      a => a.STATEName, 
      b => b.MapFrom(c => _STATENAME(c.STATE))) 
      .ForMember(
      d => d.ROLENAME, 
      e => e.MapFrom(f => _roleName(f.STATE))) 
      .ForMember(
      g => g.COUNTRYName, 
      h => h.MapFrom(i => _COUNTRYNAME(i.STATE))) 
      .ForMember(
      j => j.USERTYPENAME, 
      k => k.MapFrom(l => _TYPE_NAME(l.STATE))); 

    } 
} 

しかし、予期せぬ結果ですが、間違いはありません。カスタムタイプコンバータでも成功しません。

public class CustomUserConverter : ITypeConverter<STBL_ADMINUSERS, UsersVM> 
{ 
    Func<int, string> _roleName = t => { return new RolesDAO().getROLEsByID(t).ROLE_NAME; }; 
    Func<int, string> _STATENAME = t => { return new StateDAO().getStatesByID(t).STATENAME; }; 
    Func<int, string> _COUNTRYNAME = t => { return new CountryDAO().getCountrieByID(t).COUNTRYNAME; }; 
    Func<int, string> _TYPE_NAME = t => { return new UsersTypeDAO().getUsersTypeByID(t).TYPE_NAME; }; 

    public UsersVM Convert(STBL_ADMINUSERS s, ResolutionContext c) 
    { 
     UsersVM t = new UsersVM(); 
     t.ROLENAME = _roleName(s.ROLEID); 
     t.COUNTRYName = _COUNTRYNAME(s.COUNTRY); 
     t.STATEName = _STATENAME(s.STATE); 
     t.USERTYPENAME = _TYPE_NAME(s.USER_TYPE_ID); 
     return t; 
    } 
} 

答えて

0

カスタムタイプコンバータを使用します。タイプコンバータを使用すると、ソースタイプからターゲットタイプへのAutoMapperのマッピング方法を完全に制御できます。

Custom Type Converters

+0

その例を理解しようとしたが、それは少なくともこの1つのプロパティROLENAME = _roleName(t.ROLEID)のために働くだろうwが、私は、uはカスタムコンバータを使用してホ説明してくださいすることができませんでした... –

+0

私を参照してください。更新 –

関連する問題