Итак, я пишу приложение 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)
Единственным, что меняется в различных случаях является Property я использую, чтобы сравнить со значением правила. По какой-то причине я не могу придумать способ его повторного использования, потому что у меня нет значения для передачи какой-либо функции, поскольку значение выводится в функции. Как я могу написать функцию для абстрагирования от нее, нужно знать, какое значение ей нужно получить и передать эту информацию, то есть передать ее, какое свойство ей нужно будет проверить, а не значение указанного свойства.
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;
}
}
}
Я продолжаю переписывать этот метод инлайн везде, где мне нужно его с правильной собственности .... это, очевидно, весьма расточительно и любые изменения должны быть сделаны во многих местах. Заранее спасибо
в случае, если я не ясно, я даже не Обский ject для свойства вне цикла. Я хотел бы инкапсулировать что-то, что содержит логику цикла [которая не изменяется] вместе с возможностью предоставления настраиваемого свойства методу. Вещь, если у меня есть 4 условия, которые точно совпадают, за исключением того, какое свойство они оценивают, поэтому я только что скопировал и вставил весь этот код и изменил ссылку на свойство. Еще хуже, что каждый из этих 4 имеет 3 варианта, один из которых, если использует a>, a <и an = So, у меня действительно этот метод слегка изменен 12 раз. – Jordan