Comment puis-je utiliser AutoMapper à la carte de plusieurs sous-classes dans une classe?

Supposons que j'ai trois classes qui sont des sous-classes d'une classe de base:

public class BaseClass
{
    public string BaseName { get; set; }
}

public class Subclass1 : BaseClass
{
    public string SubName1 { get; set; }
}

public class Subclass2 : BaseClass
{
    public string SubName2 { get; set; }
}

public class Subclass3 : BaseClass
{
    public string SubName3 { get; set; }
}

Je voudrais une carte à une classe ViewModel qui ressemble à ceci:

public class ViewModel
{
    public string BaseName { get; set; }
    public string SubName1 { get; set; }
    public string SubName2 { get; set; }
    public string SubName3 { get; set; }
}

ViewModel simplement combine les propriétés de toutes les sous-classes et s'aplatit. J'ai essayé de configurer le mappage de la sorte:

AutoMapper.CreateMap<BaseClass, ViewModel>();

Ensuite, j'ai essayé de l'accaparement des données de ma base de données comme suit:

var items = Repo.GetAll<BaseClass>();
AutoMapper.Map(items, new List<ViewModel>());

Cependant, il arrive que seul le BaseName propriété seront remplies dans la ViewModel. Comment puis-je configurer AutoMapper de sorte qu'il va mapper les propriétés dans les sous-classes ainsi?

Vouliez-vous dire... (différents sous-classe de noms) public class Subclass2 : BaseClass { public string SubName1 { get; set; } } public class Subclass2 : BaseClass { public string SubName2 { get; set; } } public class Subclass3 : BaseClass { public string SubName3 { get; set; } }

OriginalL'auteur Daniel T. | 2010-12-22