基本问题在这里,但我是新来的C#。我有代码基本上说:如果条件A,然后执行属性X上的代码块。如果条件B,然后在属性Y上执行相同的代码块,依此类推。而不是必须重复我的代码块只是为了更改一个单一的属性名称 - a.Value.ValueX为a.Value.ValueY - 是否有方法将ValueX或ValueY作为变量调用,如a.Value。{$ propertyName} ?动态获取keyvaluepair值
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;
}
}
}
}
难道你们就不能只是提取公共代码的方法,你使用'a.Value.ValueX'和'a.Value.ValueY'调用? – 2015-01-15 15:48:49
否,因为重复执行的代码正在循环通过嵌套字典的第二级,这会使其无用。我最终还是会复制大量的代码。 – phpmeh 2015-01-15 15:52:33
这并不完全清楚你的意思。让你的例子代表真正的问题将在这里有所帮助。 – 2015-01-15 15:53:07