Ich habe eine Methode bekommt, die derzeit eine IList als Parameter übernimmt, wo UserBO des folgenden ähnelt:Wie mache ich diese Klasse wiederverwendbarer? (Spezifisches Beispiel innen)
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
}
}
Diese Methode verwendet dann die Username/Pin-Paare einige XML zu erstellen verwendet von einem anderen Programm (wir verwenden die obige Methode als Beispiel).
Die Sache ist, jetzt muss ich in der Lage sein, den gleichen Code zu erzeugen, außer die Verwendung des Passwort-Feldes anstelle des Pin-Feldes (es gibt einen guten Grund, beide Felder zu haben).
Anstatt nur eine andere Methode mit einem ähnlichen Namen zu erstellen, würde ich den Code lieber umgestalten, um den BO-spezifischen Code vollständig aus dieser Klasse zu entfernen und die Entscheidung darüber zu treffen, welche Klasse/Mitglieder verwendet werden sollen werden nicht in der Methode selbst gemacht, sondern im Code, der sie aufruft.
Eine Option wäre, ein IDictionary zu übergeben und die Linq ToDictionary-Methode zu verwenden, um ein Wörterbuch im aufrufenden Code zu erstellen. Dies würde jedoch die Reihenfolge der Gegenstände verlieren (was schön, aber nicht unbedingt notwendig wäre). Ich könnte eine IList oder etwas verwenden, aber das wäre schwieriger zu konvertieren die IList.
Hat jemand gute Vorschläge, wie man das macht?
P.S. Wenn jemand eine bessere Vorstellung davon hat, wie man diesen Beitrag tituliert, dann zögern Sie nicht, es zu versuchen.
Ich denke, das könnte funktionieren. Ich werde es testen. Vielen Dank! –