C# 以对象和成员名称作为参数的泛型函数?
有没有一种方法可以创建一个泛型函数,该函数可以将一个对象作为参数,也可以将它的一个成员作为参数。这样我就可以做这样的事情:C# 以对象和成员名称作为参数的泛型函数?,c#,function,class,object,generics,C#,Function,Class,Object,Generics,有没有一种方法可以创建一个泛型函数,该函数可以将一个对象作为参数,也可以将它的一个成员作为参数。这样我就可以做这样的事情: Sort(List<inventory>, inventoryClass.count); //Do something to display the inventory items sorted by their count member Sort(List<inventory>, inventoryClass.price); //Do som
Sort(List<inventory>, inventoryClass.count);
//Do something to display the inventory items sorted by their count member
Sort(List<inventory>, inventoryClass.price);
//Do something to display the inventory items sorted by price.
Sort<TItem, TField>(List<TItem> list, Func<TItem, TField> func)
{
var field = func(list[0]);
}
Sort(yourList, item => item .count);
排序(列表,inventoryClass.count);
//执行某些操作以显示按盘点成员排序的库存项目
排序(列表、存货类别、价格);
//执行一些操作以显示按价格排序的库存项目。
之后,甚至在不同对象和不同成员的列表上使用它
这个函数看起来怎么样?如何使用变量来决定要排序的成员?您可以传递Func
。在Sort
中,您可以这样使用它:
Sort(List<inventory>, inventoryClass.count);
//Do something to display the inventory items sorted by their count member
Sort(List<inventory>, inventoryClass.price);
//Do something to display the inventory items sorted by price.
Sort<TItem, TField>(List<TItem> list, Func<TItem, TField> func)
{
var field = func(list[0]);
}
Sort(yourList, item => item .count);
一种构建方法是将第二个参数设置为选择器函数-a
Func
,它接收有问题的对象并返回要排序的属性
List<inventory> Sort(List<inventory> list,
Func<inventory, object> orderBySelector)
{
return list.OrderBy(orderBySelector).ToList();
}
当然,Sort
函数所做的工作量很小,您最好直接使用LINQ的OrderBy