所以我正在写一个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;
}
}
}
我一直重写这个方法直列无论我需要它与真正的财产....这显然是很浪费的,需要在许多地方进行任何改变。 在此先感谢
如果我不明白,我甚至不具备OB在循环之外的属性的对象引用。我想封装一些包含循环逻辑[不会改变]的东西以及向方法提供定制属性的能力。事情如果我有4个条件是完全相同的,除了他们评估的属性,所以我刚刚复制并粘贴了整个代码并更改了属性引用。更糟糕的是,每个4有3个变种,其中一个在哪里使用a>,a <和an =所以我真的有这个方法稍微修改了12次。 – Jordan 2012-03-16 08:08:57