2014-06-17 1 views
3

J'ai une variable de type anonyme. Cette variable provient d'une autre fonction, nous n'avons pas pu la changer.comment convertir le type anonyme en type connu

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

J'ai une classe:

class Myclass{ 
    string property1; 
    string property2; 
} 

Comment convertir la variable a type Myclass. J'ai essayé

Myclass b = (Myclass)a; 

mais cela ne fonctionne pas.

Si j'initialize:

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

il fonctionne, mais il faudra beaucoup de code, car MyClass possède de nombreuses propriétés

Quelqu'un peut-il me aider? Merci pour toute réponse.

+1

Vous ne pouvez pas le diffuser, car ces types ne sont pas liés. Vous pouvez utiliser la bibliothèque de mappage, par ex. automapper, pour travailler pour vous si vous ne voulez vraiment pas écrire le code d'initialisation. – MarcinJuraszek

+1

[en utilisant AutoMapper] (http://stackoverflow.com/a/10465897/491243) –

Répondre

8

Vous ne pouvez pas utiliser la conversion ici, car ni votre type anonyme n'a hérité de MyClass ni explicit type conversion operator défini pour ces types.

Vous pouvez utiliser AutoMapper (disponible à partir NuGet) à la carte dynamique entre le type anonyme et votre classe

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

Il mappe les propriétés d'objet anonyme aux propriétés du type de destination par nom:

enter image description here

+0

merci, puis-je vous demander sth? Où puis-je obtenir une classe Mapper? –

+0

@JohnNguyen suivez le lien, ou vous pouvez simplement trouver AutoMapper dans NuGet –

+1

merci @Sergey Berezovskiy. –

Questions connexes