Основной вопрос здесь, но я новичок в С#. У меня есть код, который в основном говорит: если условие 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;
}
}
}
}
Вы можете сделать это:
int val = 0;
if(Conditions.A)
val = a.Value.ValueX;
else if(Conditions.B)
val = a.Value.ValueY;
// Your code block here using "val".
Создайте переменную и заполните ее соответствующим значением свойства:
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'
}
a.Value.ValueX
иa.Value.ValueY
?