[英]Generic function that takes an object and a member name as parameters?
有沒有一種方法可以創建一個通用函數,該函數可以將一個對象作為參數,也可以將其作為成員之一。 這樣我可以做這樣的事情:
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.
然后,甚至在不同對象和不同成員的列表上使用它。
此功能看起來如何? 如何使用變量來確定要查找的成員?
一種構建方法是使第二個參數為選擇器函數Func<inventory,object>
,該函數接收有問題的對象並返回要排序的屬性。
List<inventory> Sort(List<inventory> list,
Func<inventory, object> orderBySelector)
{
return list.OrderBy(orderBySelector).ToList();
}
然后通過傳遞一個匿名函數(通常是lamba表達式)來調用它:
var listSortedByPrice = Sort(originalList, item => item.price);
var listSortedByCount = Sort(originalList, item => item.count);
當然,使用Sort
函數完成的工作量最少,直接使用LINQ的OrderBy
會更好。
您可以傳遞Func<TItem, TField>
。 在Sort
您可以像這樣使用它:
Sort<TItem, TField>(List<TItem> list, Func<TItem, TField> func)
{
var field = func(list[0]);
}
然后您這樣調用Sort:
Sort(yourList, item => item .count);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.