私のビューモデルの大半は、EncryptedBaseViewModel
というベースビューモデルから継承しています。このメソッドはIDを暗号化して、データベースの機密情報が表示されないようにします。特定のクラスからすべて継承する汎用オートマッパーマッピング
EncryptedBaseViewModel
にマップされているエンティティ間のすべてのマッピングを処理するAutoMapperマッピングを作成したいとします。ソースIDの値を取得し、宛先のSetIdメソッドに渡します。
のViewModelクラス
class EncryptedBaseViewModel
{
private string _encryptedId;
public int Id {get; set; } // to be after new mapping method is developed.
public void SetId(int id)
{
_encryptedId = Encrypted(id);
}
public string GetId()
{
return _encryptedId;
}
}
自動マッパー例
私ははアプローチのかわからないとしてマッピング後の値を渡すこの例を、ハッキング
を築いてきました。
こちらをお奨めします。
CreateMap<AnySource, EncryptedBaseViewModel>().ForMember(vm => nameof(vm.Id), opt => opt.Ignore()).AfterMap((src,dest) => dest.SetId(src.Id));
質問
- は、一般的なマッパーを作ってそれは可能です。もしそうなら、
AnySource
がどこに指定されますか? - マッピングは他の特定のマッピングと同様に実行されますか? - したいです。
私はすべてのエンティティに対して同じマッピングを書く必要がないようにしています。これは、実行が忘れられる状況につながる可能性があるためです。
目的地にマップしたいクラスを特定のインターフェースを実装してマッピングするほうがよいでしょう。 – DavidG