如何编写一个通用的排序扩展
这个问题在这里已经有了答案:
你是否打算使列表元素通用? 喜欢这个:
public static class ObjectExtension
{
public static List<T> Sort<T>(this List<T> list) where T : IFoo
{
list.Sort((x, y) => string.Compare(x.Name, y.Name));
return list;
}
}
public interface IFoo {
string Name { get; }
}
public class Foo1 {
public string Name { get; set; }
}
public class Foo2 {
public string Name { get; set; }
}
您的参数应该是您的类型的集合,因此您可以将其作为集合对待,并访问Name
属性:
public static class ObjectExtension
{
public static List<Foo> MyGenericSortFunction(this List<Foo> list)
{
list.Sort((x, y) => string.Compare(x.Name, y.Name));
return list;
}
}
你不会在这里使用泛型,因为你特别需要使用Name
,它是Foo
类的一个属性。 如果它是在一个接口中定义的,你可以使你的扩展通用于接口。
请注意,这会编辑现有列表,而不是返回像LINQ那样的新列表。
链接地址: http://www.djcxy.com/p/70955.html