Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用函数时是否可以创建类模板并选择C#属性?_C#_Templates - Fatal编程技术网

调用函数时是否可以创建类模板并选择C#属性?

调用函数时是否可以创建类模板并选择C#属性?,c#,templates,C#,Templates,是否有人知道是否可以将以下对象列表传递给函数,并指定函数应在其处理的每个对象中使用哪个属性 我有一个类在整个类中处理对象的特定属性,但我不想创建同一个类的多个副本来处理该对象的不同属性。我曾考虑过使用Linq,但我没有找到一种方法来指定在操纵类的其他函数中使用哪个属性 我想应该有一种更优雅的方法来实现这一点,而不是创建同一个类来处理每个属性。我曾考虑过使用反射来告诉函数使用哪个属性,但很快就会变得很糟糕 psuedo代码示例: class Store { int amount; in

是否有人知道是否可以将以下对象列表传递给函数,并指定函数应在其处理的每个对象中使用哪个属性

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

我想应该有一种更优雅的方法来实现这一点,而不是创建同一个类来处理每个属性。我曾考虑过使用反射来告诉函数使用哪个属性,但很快就会变得很糟糕

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

}
类存储
{
整数金额;
int-id;
int系列;
}
类聚合方法
{
bool有3个值(列出places/*一些其他参数以指定要使用的属性*/)
{
//使用Store.amount或Store.id执行某些操作
}
//使用Store.amount或Store.id或Store.serial的其他功能
}

在您的例子中,它们都是
int
值-因此您可以保留一个
Func
或将其传递到每个方法中。如果您需要处理多个类型,它会变得稍微困难一些,但是我们没有足够的信息来进一步评论

还不清楚您是否期望两个聚合方法有多个实例(例如,一个用于金额,一个用于ID等),或者它们是否真的是静态方法。如果您使用的是实例,那么可以将投影作为成员变量,并在每个方法中应用它


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

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

还不清楚您是否期望两个聚合方法有多个实例(例如,一个用于金额,一个用于ID等),或者它们是否真的是静态方法。如果您使用的是实例,那么可以将投影作为成员变量,并在每个方法中应用它


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

Jon!谢谢你的回复。我只是编了那个代码来说明我的观点。我并不是真的在做聚合,但我确实需要让一个类操纵另一个类的属性值。不要被这些名字所纠缠,因为它们是任意的。函数名是随机的,我基本上有一个类,我用它来操作Store类的一个成员。我有大约8个函数操作特定的存储类成员。我希望AggregatorMethods类有多个实例。@AriesOntheHorizon:一如既往,获得有用答案的关键之一是提供一个相关的示例:)听起来您可能想使
AggregationMethods
通用,在构造函数中使用
Func
,其中,
T
是投影结果的类型。我希望这会有帮助,但如果没有,请提供一个更具体、更现实的例子,我会看看我能做些什么。乔恩!谢谢你的回复。我只是编了那个代码来说明我的观点。我并不是真的在做聚合,但我确实需要让一个类操纵另一个类的属性值。不要被这些名字所纠缠,因为它们是任意的。函数名是随机的,我基本上有一个类,我用它来操作Store类的一个成员。我有大约8个函数操作特定的存储类成员。我希望AggregatorMethods类有多个实例。@AriesOntheHorizon:一如既往,获得有用答案的关键之一是提供一个相关的示例:)听起来您可能想使
AggregationMethods
通用,在构造函数中使用
Func
,其中,
T
是投影结果的类型。我希望这能有所帮助,但如果没有,请提供一个更具体、更现实的例子,我会看看我能做些什么。