次のマッピングを使用して、データオブジェクトをviewmodelオブジェクトにマップしています。C#Automapperカスタムリゾルバからプロパティを使用して解決する方法
ObjectMapper.cs
public static class ObjectMapper
{
public static void Configure()
{
Mapper.CreateMap<User, UserViewModel>()
.ForMember(dest => dest.Title,
opt => opt.ResolveUsing<TitleValueResolver>())
.ForMember(dest => dest.Name,
opt => opt.ResolveUsing<NameValueResolver >())
.ForMember(dest => dest.ShortName,
opt => opt.ResolveUsing<ShortNameValueResolver >());
}
}
パーサ私は別のカスタム値を使用して宛先プロパティにロジックを追加するために上記のコードを使用しています
public class Parser{
public string GetTitle(string title){
/* add some logic */
return title;
}
public string GetName(string title){
/* add some logic */
return name;
}
public string GetShortName(string title){
/* add some logic */
return shortname;
}
}
AutoMapperCustomResolvers.cs
public class TitleValueResolver : ValueResolver<User, string>
{
private readonly BaseValueResolver _baseResolver;
public TitleValueResolver()
{
_baseResolver = new BaseValueResolver();
}
protected override string ResolveCore(Usersource)
{
return _baseResolver.Parser.GetTitle(source.TITLE);
}
}
public class NameValueResolver : ValueResolver<User, string>
{
private readonly BaseValueResolver _baseResolver;
public NameValueResolver()
{
_baseResolver = new BaseValueResolver();
}
protected override string ResolveCore(Usersource)
{
return _baseResolver.Parser.GetName(source.TITLE);
}
}
public class ShortNameValueResolver : ValueResolver<User, string>
{
private readonly BaseValueResolver _baseResolver;
public ShortNameValueResolver()
{
_baseResolver = new BaseValueResolver();
}
protected override string ResolveCore(Usersource)
{
return _baseResolver.Parser.GetShortName(source.TITLE);
}
}
リゾルバ。これが正しいアプローチであるかどうかはわかりません。
i)これを達成するより良い方法はありますか?
ii)そして、カスタムリゾルバコンストラクタに依存関係を注入したい場合に、unityを使って解決する方法は?
おかげ
'TitleValueResolver'はどのように構築されると思いますか?これにはデフォルトのコンストラクタはなく、マッピング設定に 'ConstructedBy'式を指定しないでください。一般的に、あなたの例では、クラスがひどく欠けています...不足している部分を減らしたり提供したりして、例をmvceに変えてください。 – grek40
@ grek40、私は私の質問を更新しました。 –
'TypeValueResolver'は新しい' TitleValueResolver'ですか? 'MAMAsset'が' User'型から何かを解決するためのバリューリゾルバを期待していますか? – grek40