2

プレゼンテーション モデルを作成しましたが、それを (AutoMapper を使用して) ViewModel にマップしたいと考えています。ViewModel は複合です / 私はパーシャルを使用していて、たとえば KeyboardsViewModel を他のビュー/パーシャルでも再利用したいからです。

このプレゼンテーション モデルを ViewModel にマップ (セットアップ マッピング) するにはどうすればよいですか? これは正しいアプローチですか?

ありがとう!

public class MainPresentationModel : BasePresentationModel
{
  // Should map into the MainViewModel.Keyboards.Keyboards
  public int DefaultKeyboard { get; set; }
  // Should map into the MainViewModel.Keyboards.DefaultKeyboard
  public IList<Keyboard> Keyboards { get; set; }
  // Should map into the MainViewModel.Something
  public string Something { get; set; }
}

public class MainViewModel : BaseViewModel
{
  public KeyboardsViewModel Keyboards { get; set; }
  public string Something { get; set; }
}

public class KeyboardsViewModel
{
  public int DefaultKeyboard { get; set; }
  public IList<Keyboard> Keyboards { get; set; }
}

編集済み:試してみた後、これが1つのオプションだと思います:

        Mapper.CreateMap<MainPresentationModel, MainViewModel>()
            .ForMember(d => d.Keyboards, opt => opt.MapFrom(src => src));
        Mapper.CreateMap<MainPresentationModel, KeyboardsViewModel>();

うまくいくようですが、これが最適/正しい方法かどうかはわかりません...

4

1 に答える 1

0

この方法は間違いなく機能します。これらの複合 UI のインターフェイスを使用することもできます。たとえば、パーシャルは IKeyboardsViewModel を受け入れることができ、複雑な継承階層について心配する必要はありません。次に、各部分にメイン モデルのスライスを与えるだけです。

于 2010-01-25T13:37:17.190 に答える