我同意基类的想法,因为这将保存所有重复的代码。我朝着这个方向迈出的一步是创建一个类来处理任何通用列表的排序(对于 DTO/POCO)。这使我可以仅用 1 行代码对我的演示者或代码隐藏中的列表进行排序。
通常对于 SortExpression,我会返回要排序的 DTO 的属性名称。此外,SortDirection 将是一个简单的“升序”或“降序”
List<Supplier> SupplierList = mSupplierService.GetSuppliers();
SupplierList.Sort(new GenericComparer<Supplier>(mView.SortExpression, mView.SortDirection));
mView.Suppliers = SupplierList;
这是我使用的课程
public class GenericComparer<T> : IComparer<T>
{
private string mDirection;
private string mExpression;
public GenericComparer(string Expression, string Direction)
{
mExpression = Expression;
mDirection = Direction;
}
public int Compare(T x, T y)
{
PropertyInfo propertyInfo = typeof(T).GetProperty(mExpression);
IComparable obj1 = (IComparable)propertyInfo.GetValue(x, null);
IComparable obj2 = (IComparable)propertyInfo.GetValue(y, null);
if (mDirection == "Ascending") {
return obj1.CompareTo(obj2);
}
else {
return obj2.CompareTo(obj1);
}
}
}