【发布时间】:2016-06-29 18:56:06
【问题描述】:
如何重新编写此排序代码示例,使其使用通用扩展而不是第二行?
我想要这样的东西
var foosSorted = Unit.Foos().MyGenericSortFunction();
我的工作代码
var foosSorted = Unit.Foos(); // Not sorted yet
foosSorted.Sort((x, y) => string.Compare(x.Name, y.Name));
我在通用扩展方面取得了多大进展
public static class ObjectExtension
{
public static T Sort<T>(this T list) where T : ???
{
return list.Sort((x, y) => string.Compare(x.Name, y.Name));
}
}
【问题讨论】:
-
我也许可以用这个 linq 来解决它 ` var foosSorted = Unit.GetFoos().OrderBy(f => f.Name).ToList(); ` 但我仍然很想知道如何使用通用扩展解决方案来实现这一点,因为我对通用部分非常糟糕。
-
@Shiva 是的,我也看到了这个问题。但我仍然想学习通用的替代方案。
-
你应该选择这个答案stackoverflow.com/a/26406452/1789202
-
@Shiva 这个副本怎么样? OP 知道如何对列表进行排序。需要一种不在重复链接范围内的通用方式。
-
OrderBy是通用解决方案。为什么要写另一个?
标签: c# generics extension-methods generic-list