1

DTOクラスを用意しましょう:

public class UserDto {
  public int Id { get;set; }
}

ビューモデル クラス (ベース mvc プロジェクト ライブラリ):

public abstract class UserViewModelBase {
  public int Id { get;set; }
}

今、次のようにオートマッパーのマッピングを作成すると:

Mapper.CreateMap<UserDto, UserViewModelBase>();

メインの Web MVC プロジェクトでは、次のように UserViewModelBase の実装を作成しています。

public class UserViewModel: UserViewModelBase {
}

今私がこれを呼び出すとき:

Mapper.Map<UserDto, UserViewModel>()

次のようなエラーで失敗します。

タイプ マップ構成が欠落しているか、サポートされていないマッピングです。

UserDto -> UserViewModel

これは、UserDto と UserViewModel の間の直接マッピングを定義していないことが原因であると理解しています。Mapper.CreateMap<UserDto, UserViewModelBase>();AutoMapper に、このマップを使用して、 から継承する目的の型として任意の型を受け入れる必要があることを伝える方法があるかどうかを知りたいですUserViewModelBase

4

1 に答える 1

0

これを達成する方法を誰も知らないようですので、これを回避しました。

私の回避策は、次のようなconcreateターゲットクラスを使用して、マッピングを(を使用してMapper.CreateMap(...))複数回構築することでした。

ClassLibrary1 で:

Mapper.CreateMap<UserDto, UserViewModel1>();

2 番目の ClassLibrary2:

Mapper.CreateMap<UserDto, UserViewModel2>();

UserViewModel1 と UserViewModel2 が同じ基本クラスから派生した場合でもUserViewModelBase

于 2012-10-17T13:26:22.720 に答える