2009-09-04 8 views
0

J'ai plusieurs méthodes qui peuplent une collection de paramètres objets SQLCommand d'un objet comme celui-cirefactorisation Avec réflexion

if (!String.IsNullOrEmpty(SearchObj.FirstName)) 
{ 
    command.AddParameter(Fields.FirstName, SearchObj.FirstName); 
} 
if (!String.IsNullOrEmpty(SearchObj.LastName)) 
{ 
    command.AddParameter(Fields.LastName, SearchObj.LastName); 
} 
if (!String.IsNullOrEmpty(SearchObj.EmailAddress)) 
{ 
    command.AddParameter(Fields.EmailAddress, SearchObj.EmailAddress); 
} 
if (SearchObj.JobRoleId > -1) 
{ 
    command.AddParameter(Fields.JobRoleId, SearchObj.JobRoleId); 
} 

Cela peut être gênant que l'objet peut contenir jusqu'à environ 20 propriétés. Est-ce que de toute façon utiliser la réflexion pour faire une boucle sur chacune de ces propriétés et les ajouter toutes à la collection de paramètres des objets Sqlcommand? En gardant à l'esprit qu'il traite les chaînes différemment des entiers en ce qu'il ajoute seulement une chaîne si elle n'est pas nulle ou vide et il ajoute seulement un entier s'il est supérieur à -1.

Je n'ai pas utilisé beaucoup de réflexion auparavant, donc un point dans la bonne direction serait génial.

Merci

Répondre

0

Essayez d'utiliser les méthodes énumérées ici: How to get the list of properties of a class?

puis boucle sur les les ajoutant comme bon vous semble.

+0

Et pour la vitesse réelle, vous pouvez utiliser les informations pour générer du code qui accède rapidement et nativement à ces propriétés. –

+0

Oui, et honnêtement, c'est là que le DLR est un excellent choix pour cela. Nous avons pris beaucoup de réflexion pour les objets inconnus et les avons remplacés par des appels DLR. La performance est excellente. –