これにより、すべての重複コードが保存されるため、基本クラスのアイデアに同意します。この方向への一歩を踏み出すために私が行ったことの 1 つは、(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);
}
}
}