是否有人知道以下是否可以传入List<>对象的函数,并指定函数应该在其使用的每个对象中使用哪个属性?
我有一个类在整个类中使用对象的特定属性,但我不想创建同一个类的多个副本来处理该对象的不同属性。我想过使用Linq,但我没有看到一种方法来指定在操作类的其他函数中使用哪个属性。
我认为必须有一种更优雅的方式来实现这一点,而不是创建相同的类来处理每个属性。我想过使用Reflection来告诉函数哪个属性可以使用但是很快就会变得难看
psuedo代码示例:
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
}
答案 0 :(得分:3)
在您的情况下,它们都是int
个值 - 因此您可以保留Func<Store, int>
或将其传递给每个方法。如果你需要处理多种类型,它会变得稍微困难,但我们没有足够的信息来进一步评论。
还不清楚你是否会期望两个有AggregationMethods
的多个实例(例如一个用于金额,一个用于ID等)或者这些是否真的是静态方法。如果您正在使用实例,那么您可以将投影保留为成员变量,并将其应用于每个方法中。
值得注意的是,你给出的属性可能对应用相同的聚合没有多大意义 - 例如,虽然求和量是有意义的,但总结ID是没有意义的。