c# - source - Automapper 5.0グローバルコンフィグレーション




automapper memberlist (2)

このシナリオで実際にプロファイルを使用する必要がありますか? そうしないと、マッパーを次のように初期化するだけでよい:

public static class AutoMapperConfiguration
{
    public static void Configure()
    {
        Mapper.Initialize(
            config =>
            {
                config.CreateMap<Hospital, MongoHospital>()
                    .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id.ToString()));
            });
    }
}

ただし、プロファイルを登録したい場合は、次のようにします。

public static class AutoMapperConfiguration
{
    public static void Configure()
    {
        Mapper.Initialize(
            cfg =>
            {
                cfg.AddProfile<HospitalProfile>();
            }
        );
    }
}

public class HospitalProfile : Profile
{
    protected override void Configure()
    {
        CreateMap<Hospital, MongoHospital>()
                .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id.ToString()));
    }
}

お役に立てれば。 AutoMapper 5.0を使用している場合、これは現時点ではまだベータ1であることに注意してください。

私はApp_Startフォルダー内のAutoMapperConfig.csで以下のコードを使用しています。 私はAutoMapperConfiguration.Configure()としてGlobal.asax初期化しましたGlobal.asax

しかし私はMapper.Map<Hospital, MongoHospital>を私のコントローラーで使用することはできません。 マッピングが定義されていないという例外がスローされています。 Mapper.CreateMap<>メソッドをサポートしていた以前のバージョンのAutomapperで動作していました。 私はMapperConfigurationインスタンスを使用する方法が混乱しています。

public static class AutoMapperConfiguration
{
    public static void Configure()
    {
        Mapper.Initialize(
            cfg =>
                {
                    cfg.AddProfile<HospitalProfile>();
                }
        );
        Mapper.AssertConfigurationIsValid();
    }
}

public class HospitalProfile : Profile
{
    protected override void Configure()
    {
        var config = new MapperConfiguration(
            cfg =>
                {
                    cfg.CreateMap<Hospital, MongoHospital>()
                        .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id.ToString()));
                });
        config.CreateMapper();
    }
}

以下のようにこの地図にアクセスしようとしています

Mapper.Map<IEnumerable<Hospital>, IEnumerable<MongoHospital>>(hospitalsOnDB);

これはAutoMapper 5.2で使用できます。

あなたのプロフィールクラスは以下の通りです

public class MapperProfile: Profile
{
    public MapperProfile()
    {
        CreateMap<Hospital, MongoHospital>().ReverseMap();
    }

}

次に、あなたのGlobal.asax

     protected void Application_Start()
     {
       //Rest of the code 
       Mapper.Initialize(c => c.AddProfiles(new string[] { "DLL NAME OF YOUR PROFILE CLASS" }));
     }

今すぐインスタンスを作成する必要があるとき

AutoMapper.Mapper.Instance.Map<MongoHospital, Hospital>(source, new Hospital());

お役に立てれば。





automapper