动态获取keyvaluepair值

时间:2015-01-15 15:45:25

标签: c#

这里有基本问题,但我是c#的新手。我有代码基本上说:如果条件A,则在属性X上执行代码块。如果条件B,则在属性Y上执行相同的代码块,依此类推。只需要将一个属性名称--a.Value.ValueX更改为a.Value.ValueY - 而不必复制我的代码块,就可以将ValueX或ValueY作为变量调用,例如a.Value。{$ propertyName} ?

public static class Conditions
{
    public static bool A { get; set; }
    public static bool B { get; set; }
}

public class MyObjects
{
    public int ValueX { get; set; }
    public int ValueY { get; set; }
}

public class MyCollection
{
    public Dictionary<int, MyObjects> listOfObjects = new Dictionary<int, MyObjects>();

    public static void DoConditions()
    {
        foreach( var a in listOfObjects)
        {
            if(Conditions.A)
            {
                // do code using value x
                if (a.Value.ValueX > 0)
                    continue;
            }
            else if(Conditions.B)
            {
                // do the exact same code using value Y
                if (a.Value.ValueY > 0)
                    continue;
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

你可以这样做:

int val = 0;
if(Conditions.A)
    val = a.Value.ValueX;
else if(Conditions.B)
    val = a.Value.ValueY;

// Your code block here using "val".

答案 1 :(得分:1)

创建一个变量并使用适当的属性值填充它:

foreach( var a in listOfObjects)
{
    int value;
    if(Conditions.A)
        value = a.Value.ValueX;
    else
        value = a.Value.ValueY;

    if(value > 0)
        continue;
    //other code using `value`
}