У меня есть метод, который в настоящее время занимает IList как параметр, где UserBO похож на следующее:Как сделать этот класс более многоразовым? (Конкретный пример внутри)
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
}
}
Этот метод затем использует пары Имя пользователя/Pin для создания некоторых XML используется другой программой (в качестве примера мы будем использовать приведенный выше метод).
Дело в том, что теперь мне нужно иметь тот же код, за исключением поля «Пароль» вместо поля «Пин» (есть веская причина иметь оба поля).
Вместо того, чтобы просто создавать другой метод с похожим именем, я бы предпочел реорганизовать код, чтобы полностью удалить конкретный код BO из этого класса и сделать так, чтобы решение о том, какой класс/члены использовать сделаны не в самом методе, а в коде, вызывающем его.
Один из вариантов - передать IDictionary и использовать метод Linq ToDictionary для создания словаря «на лету» в вызывающем коде. Это, однако, потеряло бы порядок предметов (что было бы неплохо, но не обязательно для сохранения). Я мог бы использовать IList или что-то в этом роде, но было бы труднее преобразовать IList.
Есть ли у кого-нибудь хорошие предложения о том, как это сделать?
P.S. Если у кого-то есть лучшее представление о том, как назвать этот пост, не стесняйтесь идти на него.
думаю это может сработать. Я собираюсь проверить это. Благодаря! –