Итак, я пишу приложение на C #, используя .net / c # 4.0. У меня есть метод, который принимает пользовательский тип и словарь.Я использую это для разных целей, но по какой-то причине я не могу придумать способ инкапсулировать логику.Проблема в том, что эта строка
if (FastIntParse.FastParse(_dict[_Rule.Key].hourly_data[a].PropertyA) >
_Rule.Value)
При другом использовании это может быть
if (FastIntParse.FastParse(_dict[_Rule.Key].hourly_data[a].PropertyB) >
_Rule.Value)
Единственное, что меняется в разных случаях, - это свойство, которое я использую для сравнения со значением правила,По какой-то причине я не могу придумать способ его повторного использования, потому что у меня нет значения для передачи в какую-либо функцию, так как значение получено в функции.Как я могу написать функцию для абстрагирования, она должна знать, какое значение необходимо получить и передать эту информацию, т.е. передать ее, какое свойство нужно будет проверить, а не значение указанного свойства.
int a;
for (int z= 0;z<=2;z++)
{
a = (z * z) * 24;
for (; (a%24) <= _Rule.AlertEndTime; a++)
{
if (FastIntParse.FastParse(_dict[_Rule.Key].hourly_data[a].PropertyA) >
_Rule.Value)
{
EnqueueRuleTrigger(_Rule);
break;
}
}
}
Я продолжаю переписывать этот метод inline везде, где он мне нужен с надлежащим свойством .... это, очевидно, довольно расточительно, и любые изменения должны быть сделаны во многих местах.Заранее спасибо