gpt4 book ai didi

c# - 如何使此类更易于重用? (具体例子里面)

转载 作者:太空宇宙 更新时间:2023-11-03 20:46:36 26 4
gpt4 key购买 nike

我有一个方法,目前以 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(我们将使用上述方法作为示例)。

问题是,现在我需要能够生成相同的代码,除了使用密码字段而不是 Pin 字段(拥有这两个字段是有充分理由的)。

与其创建另一个具有相似名称的方法,我更愿意重构代码,以便从此类中完全删除 BO 特定代码,并做出决定,以便决定使用什么类/成员不是在方法本身,而是在调用它的代码中。

一种选择是传递 IDictionary 并使用 Linq ToDictionary 方法在调用代码中即时创建字典。然而,这会丢失项目的顺序(这很好,但不是必需的)。我可以使用 IList 或其他东西,但将 IList 转换成这样会更困难。

有没有人对如何做到这一点有什么好的建议?

附言如果有人对如何给这篇文章起标题有更好的想法,请随时尝试一下。

最佳答案

你也可以使用表达式:

 WriteUsers(IList<T> users, u => u.Username, u => u.Password);

如果您使用的是 Net 3.5。

关于c# - 如何使此类更易于重用? (具体例子里面),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/626910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com