427 messaggi dal 13 novembre 2009
Ciao,
due classi namespace differenti

namespace base
{
public class Person
{
public string Name {get;set;}
}
}

namespace derived
{
public class Person: Person
{
public int Age {get;set;}
}
}

Con Automapper voorei passare da deriver.Person a base.Person e ottenere base.Person. Mi aspetavo questo da
var config = new MapperConfiguration(cfg => {
cfg.CreateMap<derived.Person, base.Person>()
}
var mapper = config.CreateMapper();
derived.Person derivedPesron = new derived.Person() { Name= 'pippo', Age = 12};
base.Person basePerson = mapper.Map<derived.Person, base.Pereson>(derivedPesron);
invece basePerson è diventato derived.Person. Automapper non dovrebbe semplicemente mappare in base a nome e proprietà presenti. Se passo da derived.Person che a Age a base.Person che non ha Age dovrei avere come risultato base.Person e non derived.Person
Modificato da flaviovb il 21 novembre 2018 08.54 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
non ho capito le ultime due righe che poi sono quelle cruciali.

invece basePerson è diventato derived.Person. Automapper non dovrebbe semplicemente mappare in base a nome e proprietà presenti.

Cioè? In che senso è "diventato"?


Se passo da derived.Person che a Age a base.Person che non ha Age dovrei avere come risultato base.Person e non derived.Person

Il risultato del metodo Map è appunto un oggetto di tipo base.Person, non capisco che intendi.

Comunque, dato che stai mappando da un tipo più specifico a uno più generale, non puoi semplicemente assegnarlo a una variabile base.Person?
//Nessun mapping necessario dato che derived.Person deriva da base.Person
base.Person p = derived.Person;


A che ti serve Automapper in questo caso? Devi clonare gli oggetti? Oppure hai bisogno di fare questo?

ciao,
Moreno
Modificato da BrightSoul il 22 novembre 2018 22.27 -

Enjoy learning and just keep making
427 messaggi dal 13 novembre 2009
Perdonami
Il problema è sulle classi innestate e/o in new

namespace Base
{
public class Vacanza
{
public string Luogo { get; set; }
public DateTime Data { get; set; }
}

public class Agenzia
{
public string Codice { get; set; }
public string NumeroPratica { get; set; }
}
public class UserClass
{
public Vacanza Vacanza { get; set; }
public Agenzia Agenzia { get; set; }
}
}
namespace Admin
{
public class Agenzia : Base.Agenzia
{
public bool SoloAdmin { get; set; }
}

public class AdminClass : Base.UserClass
{
public new Agenzia Agenzia { get; set; }
}
}

Con Automapper come passo da AdminClass a UserClass facendo in modo che i dati di Admin.Agenzia vadano
in Base.Agenzia. Di default mi viene cambiato il tipo da Base.Agenzia in Admin.Agenzia
Admin.AdminClass adminClass = new Admin.AdminClass()
{
Vacanza = new Vacanza()
{
Luogo = "Parigi",
Data = DateTime.Now
},
Agenzia = new Admin.Agenzia()
{
Codice = "00",
NumeroPratica = "1234",
SoloAdmin = true
}
};

var config = new MapperConfiguration(cfg => {
cfg.CreateMap<Admin.AdminClass, UserClass>();
});
UserClass adminToUser = (UserClass) mapper.Map<Admin.AdminClass, UserClass>(adminClass);
adminToUser contiene:
Admin.Agenzia
Base.Vacanza

vorrei che contenesse invece
Base.Agenzia con i dati delle proprietà che coincidono (Codice, Pratica)
Base.Vacanza
Modificato da flaviovb il 23 novembre 2018 08.13 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.