4

AutoMapper は初めてです。これが単純すぎる場合は申し訳ありません。

これは私のサンプル ドメインです。

私はバスケットを持っています。食品のリストが含まれています。食べ物はバナナかピクルス。

ドメイン内の各クラスをミラーリングする DTO があります。目標: BasketD から、それとその内容を Basket にマップします。

これは失敗するコードです。最後の行の後にバスケットがありますが、通常のエンティティではなく DTO でいっぱいです :(

class Program
{
    static void Main(string[] args)
    {
        Mapper.CreateMap<BasketDto, Basket>();
        Mapper.CreateMap<PickleDto, Pickle>();
        Mapper.CreateMap<BananaDto, Banana>();

        var dto = new BasketDto
                  {
                      Food = new List<IFood>
                             {
                                 new PickleDto { Name = "BigPickle" },
                                 new BananaDto { Name = "SmallBanana" },
                             }
                  };

        var basketFromDto = Mapper.Map<Basket>(dto);
    }
}

// Domain classes and interfaces --------------

interface IFood
{
    string Name { get; set; }
}

class Banana : IFood
{
    public string Name { get; set; }
}

class Pickle : IFood
{
    public string Name { get; set; }
}

class Basket
{
    public IList<IFood> Food { get; set; }
}

// DTOs -------------

class BasketDto
{
    public IList<IFood> Food { get; set; }
}

class PickleDto : IFood
{
    public string Name { get; set; }
}

class BananaDto : IFood
{
    public string Name { get; set; }
}

Food を IList として使用している子もマップするにはどうすればよいですか? Mappin インターフェースと階層は本当に複雑です!

どうもありがとう。

4

2 に答える 2