簡體   English   中英

將對象和成員名稱作為參數的泛型函數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM