AutoMapper - wie benutzerdefinierte Wert resolver in benutzerdefinierten type converter
Wie kann ich mithilfe von benutzerdefinierten Wert Resolver in benutzerdefinierten type-converter?
Derzeit, so scheint es mir schwer zu erreichen. Weißt du einen Weg, wie kann ich diese Klasse verwenden?
Person Konverter
class PersonConverter : ITypeConverter<PersonData, Person>
{
public Person Convert(ResolutionContext context)
{
var personData = context.SourceValue as PersonData;
if (personData == null)
{
return null;
}
var person = new Person
{
Name = personData.Name
};
//person.Dic = //use here my DictionaryResolver
return person;
}
}
Modell
class Person
{
public string Name { get; set; }
public Dictionary Dic { get; set; }
}
class PersonData
{
public string Name { get; set; }
public int DicId { get; set; }
}
class Dictionary
{
public int Id { get; set; }
public string Name { get; set; }
}
Wert resolver
class DictionaryResolver : ValueResolver<int, Dictionary>
{
protected override Dictionary ResolveCore(int source)
{
//do something
return new Dictionary
{
Id = source,
Name = "Name"
};
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Benutzerdefinierten Wert Resolver sind konzipiert für das überschreiben der Zuordnung eines bestimmten Elements, wenn AutoMapper wird ordnen Sie die Objekte:
Jedoch, wenn Sie verwenden einen benutzerdefinierten Typ resolver, dieser übernimmt die vollständige Kontrolle des Mappings: es gibt keine Möglichkeit der Individualisierung, wie ein bestimmtes Mitglied zugeordnet ist:
Angesichts der Tatsache, dass Sie haben vollständige Kontrolle während der Konvertierung geben, es gibt nichts stoppen Sie die Wiederverwendung der Wert converter, Sie müssen nur darauf verweisen ausdrücklich: aber Sie haben, um eine öffentliche Methode gibt die protected-Methode
ResolveCore
:Dann während der Konvertierung geben Sie es nennen, um zu beheben, dass die Eigenschaft: