J'ai une méthode qui prend actuellement un IList comme paramètre, où UserBO est similaire à ce qui suit:Comment rendre cette classe plus réutilisable? (Exemple spécifique à l'intérieur)
public class UserBO {
public string Username { get; set; }
public string Password { get; set; }
public string Pin { get; set; }
}
public class SomeClass {
// An example method giving the basic idea of what I need to do
public void WriteUsers(IList<UserBO> users) {
// Do stuff with users
for (var user in users) {
Console.WriteLine(String.Format(User: {0}: {1}, users.Username, Hash(users.Pin)); // Now needs to optionally be users.Password
}
}
private string Hash(string pin) {
return // Hashed Pin
}
}
Cette méthode utilise ensuite les paires Nom d'utilisateur/Pin pour créer une XML utilisé par un autre programme (nous utiliserons la méthode ci-dessus comme exemple). La chose est, maintenant je dois être capable de produire le même code, sauf en utilisant le champ Mot de passe au lieu du champ Pin (il y a une bonne raison pour avoir les deux champs). Au lieu de simplement créer une autre méthode avec un nom similaire, je préfèrerais refactoriser le code de manière à supprimer complètement le code spécifique à BO de cette classe, et faire en sorte que la décision concernant la classe/les membres à utiliser sont faites non pas dans la méthode elle-même mais dans le code qui l'appelle.
Une option serait de passer un IDictionary et d'utiliser la méthode Linq ToDictionary pour créer un dictionnaire à la volée dans le code appelant. Cela perdrait cependant la commande des articles (ce qui serait bien mais pas indispensable à conserver). Je pourrais utiliser un IList ou quelque chose, mais ce serait plus difficile de convertir le IList en.
Est-ce que quelqu'un a de bonnes suggestions sur la façon de procéder?
P.S. Si quelqu'un a une meilleure idée de comment intituler ce post, n'hésitez pas à y aller.
Je pense que cela pourrait fonctionner. Je vais aller le tester. Merci! –