2010-01-26 4 views
0

Je pourrais utiliser un peu d'aide à la relecture. Je passe un objet dans le constructeur d'un autre objet. Je dois parcourir les propriétés du paramètre et définir les propriétés des nouveaux objets en fonction de celui-ci. La plupart des propriétés params, mais pas toutes, existent dans le nouvel objet. J'ai jusqu'à présent le squelette de base.Réflexion Aide - Définir les propriétés sur un objet basé sur un autre objet

public DisabilityPaymentAddEntity(DisabilityPaymentPreDisplayEntity preDisplay) 
    { 
     Init(preDisplay); 
    } 

    private void Init(DisabilityPaymentPreDisplayEntity display) 
    { 
     //need some type of loop using reflection here 
    } 

Dans la méthode Init, je dois faire une boucle à travers « les propriétés d'affichage et définissez « propriétés DisabilityPaymentAddEntity » du même nom à des valeurs dans le preDisplay.

Quelqu'un peut-il me donner une idée de ce que je dois faire? Je suis sûr que je dois utiliser PropertyInfo etc ..

Merci, ~ ck à San Diego

+1

Pouvez-vous expliquer davantage pourquoi vous devez utiliser la réflexion? En fait, cela ressemble à un travail pour Automapper: http://www.codeplex.com/AutoMapper – Jay

+0

HI Jay, je vais essayer. Est-ce assez facile à utiliser? J'ai téléchargé les échantillons et je vais y jeter un coup d'œil. Merci. – Hcabnettek

+0

Wow que Automapper a travaillé comme un champion !!! Une question, où puis-je créer la carte? Dans les exemples que je vois en ligne, ils suggèrent global.asax. J'essaie de garder la chose propre et rangée, et je vais utiliser cette DLL en dehors de mon application web. Où puis-je configurer une carte dans une bibliothèque de classes? Merci! – Hcabnettek

Répondre

1

Quelque chose comme ça, je pense que

Type target = typeof(DisabilityPaymentAddEntity); 
foreach(PropertyInfo pi in display.GetType().GetProperties()) 
{ 
    PropertyInfo targetProp = target.GetProperty(pi.Name); 
    if(targetProp!=null) 
    { 
     targetProp.SetValue(this, pi.GetValue(display, null), null); 
    } 
} 
Questions connexes