如何按字符串值命名bools

时间:2017-09-26 05:20:02

标签: c#

所以即时编写单元测试...

使用

动态填充XML
bool updateFirstName = false;
BuildPersonnelXml(updateFirstName)

然后将XML传递到系统并创建用户填充所有数据库表中的所有列。 (现在我想检查所有字段是否正在更新,所以我为每列编写一个单独的单元测试。)现在我记录特定列的值,用

更新xml
bool updateFirstName = true;
BuildPersonnelXml(updateFirstName)

并从数据库中获取新值。比较值是差异。如果是这样,则更新成功。

但是无论如何都要传入一个字符串值并将其与一个名为bool的比较,例如,当我编写一个新的测试时,我必须转到每个前一个单元测试并添加一个新的参数FALSE,这将是非常耗时......所以可以说

string boolToUpdate = "updateFirstName";
BuildPersonnelXml(boolToUpdate)

-----------------------------------------------------
BuildPersonnelXml(boolToUpdate)
{
bool boolToUpdate.ToString() = true;
//so this would be updateFirstName = true;
}

这可能吗?

更新

感谢彼得的帮助,但到目前为止我还没有解决我的问题......

Dictionary<string, bool> myVariables = new Dictionary<string, bool>();
myVariables.Add("FirstName", true);
BuildPersonnelXml2(myVariables);

然后......

public string BuildPersonnelXml2(Dictionary<string, bool> myVariables)
{
   Tuple<string, bool> myResult = new Tuple(myVariables["bool"], myVariables["FirstName"]);

这是解雇 无效的表达术语bool ...我做错了什么?

谢谢

第二次更新

再次,彼得,谢谢你的帮助,但我不认为你明白我的问...

我不能通过说

来收集价值观
new Tuple("FirstName", myVariables["FirstName"]);

因为valueName每次都会有所不同......所以不要用

传入3个参数
function 1()
bool updateFirstName = true;
BuildPersonnelXml(updateFirstName, false, false)

function 2()
bool updateSurname= true;
BuildPersonnelXml(false, updateSurname, false)

function 3()
bool updateInitials= true;
BuildPersonnelXml(false, false, updateInitials)

我试图将bool的值和bool的名称传递给

   BuildPersonnelXml(boolToUpdate)

所以我可以使用提供的名称创建一个bool。 你告诉我怎么做

function 1()
Dictionary<string, bool> myVariables = new Dictionary<string, bool>();
myVariables.Add("FirstName", true);
BuildPersonnelXml(myVariables)

所以当我尝试做的时候:

public string BuildPersonnelXml2(Dictionary<string, bool> myVariables)
{
Tuple<string, bool> myResult = Tuple.Create(myVariables[0], myVariables[1]);
//then I can create the bool with the name supplied and the value
bool myResult[0].ToString() = myResult[1];
//which should be 
bool FirstName = true;

这可能吗?

当我尝试这个时,它是tellling我无法将myVariables[0], myVariables[1]中的0和1转换为字符串...我不想转换它们我想将它们用作索引?

我做错了什么? 再次感谢您的帮助

1 个答案:

答案 0 :(得分:0)

要像这样使用它,您可以使用switch-case之类的:

swtich(GivenString)
{
     case "updateFirstName":
        updateFirstName = true;
        break;
    .
    .
    .

}

否则你应该使用我在这种情况下不推荐的反射。