0

有谁知道以下是否可以将对象的 List<> 传递给函数并指定该函数应在其使用的每个对象中使用哪个属性?

我有一个类在整个类中使用对象的特定属性,但我不想创建同一个类的多个副本来使用该对象的不同属性。我考虑过使用 Linq,但我没有看到一种方法来指定在操作类的其他函数中使用哪个属性。

我在想必须有一种更优雅的方式来做到这一点,而不是创建同一个类来处理每个属性。我考虑过使用反射来告诉函数使用哪个属性,但这很快就会变得丑陋

示例伪代码:

class Store
{
   int amount;
   int id;
   int serial;
}

class AggregationMethods
{
   bool Has3Values( List<Store> places /* some other param to specify which property to use*/)
   {
      // do something with Store.amount or Store.id
   }

   // other functions to work with Store.amount or Store.id or Store.serial

}
4

1 回答 1

3

在您的情况下,它们都是int值 - 因此您可以保留 aFunc<Store, int>或将其传递给每个方法。如果您需要处理多种类型,这会变得稍微困难​​一些,但我们确实没有足够的信息来进一步评论。

也不清楚您是否期望两个具有多个实例AggregationMethods例如,一个用于金额,一个用于 ID 等),或者这些是否真的是静态方法。如果您正在使用实例,那么您可以将投影保留为成员变量,并将其应用于每个方法。

值得注意的是,您给出的属性可能对应用相同的聚合没有意义——例如,虽然对金额求和是有意义的,但对 ID 求和是没有意义的。

于 2012-05-29T18:14:02.393 回答