4 Stimmen

Wie man einen anonymen Typ in einen bekannten Typen konvertiert

Ich habe eine anonyme Typvariable. Diese Variable wird von einer anderen Funktion erhalten, die wir nicht ändern konnten.

// var a {property1 = "abc"; property2 = "def"}

Ich habe eine Klasse:

class Myclass{
   string property1;
   string property2;
}

Wie kann ich die Variable a in den Typ Myclass umwandeln. Ich habe es versucht

Myclass b = (Myclass)a; 

aber es funktioniert nicht.

Wenn ich initialisiere:

Myclass b = new Myclass{
  property1 = a.property1,
  property2 = a.property2,
} 

es funktioniert, aber es erfordert viel Code, da MyClass viele Eigenschaften hat

Kann mir jemand helfen? Danke für jede Antwort.

10voto

Sergey Berezovskiy Punkte 223446

Sie können hier kein Casting verwenden, da weder Ihr anonymer Typ von MyClass geerbt hat noch ein expliziter Typkonvertierungsoperator für diese Typen definiert ist.

Sie können AutoMapper (verfügbar über NuGet) verwenden, um dynamisch zwischen anonymem Typ und Ihrer Klasse zu mappen

var a = new {property1 = "abc", property2 = "def"};
Myclass b = Mapper.DynamicMap(a);

Es werden die Eigenschaften des anonymen Objekts nach Namen auf die Eigenschaften des Zieltyps abgebildet:

Bildbeschreibung eingeben

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X