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