私はPOCOクラスのグループを持っています:
class ReportBase
{
public string Name { get; set; }
public int CustomerID { get; set; }
}
class PurchaseReport : ReportBase
{
public int NumberOfPurchases { get; set; }
public double TotalPurchases { get; set; }
public bool IsVip { get; set; }
}
class SaleReport : ReportBase
{
public int NumberOfSales { get; set; }
public double TotalSales { get; set; }
}
ReportBase を返す Web メソッドがあります。呼び出し元は、戻り値を使用して、型をダウンキャストしてチェックすることにより、実際の型に基づいて UI(WPF) を更新します (1 つのグリッドは販売用で、もう 1 つは購入用)。誰かが、3 つの Web メソッドを使用し、それぞれが特定の型を返すことを提案しました。
if/elseを導入することで、ダウンキャストは一般的に設計原則に反することがわかりました。代わりに、仮想関数を使用する必要があります。しかし、POCO クラスでは、実際には仮想動作はありません (追加のフィールドのみ)。
この場合、あなたはダウンキャストに賛成ですか反対ですか、なぜですか?