注文履歴のドメイン抽象クラスと、支払い、キャンセル、再アクティブ化などのイベントを考慮した具体的なクラスを考えてみましょう(次のコードは非常に簡略化されたバージョンです)
public abstract class OrderEvent
{
protected OrderEvent(DateTime eventDate)
{
EventDate = eventDate;
}
public abstract string Description { get; }
public DateTime EventDate { get; protected set; }
}
public class CancellationEvent : OrderEvent
{
public CancellationEvent(DateTime cancelDate)
: base(cancelDate)
{
}
public override string Description { get { return "Cancellation"; } }
}
public class PaymentEvent : OrderEvent
{
public PaymentEvent(DateTime eventDate, decimal amount, PaymentOption paymentOption) : base(eventDate)
{
Description = description;
Amount = amount;
PaymentOption = paymentOption;
}
public override string Description { get{ return "Payment"; } }
public decimal Amount { get; protected set; }
public PaymentOption PaymentOption { get; protected set; }
}
次に、このドメインモデルに基づいてASP.NET MVCプロジェクトのViewModelを構築する必要があります。これにより、すべてのイベントが1つのクラスにカプセル化され、ビューでのグリッド表示が可能になります。
public class OrderHistoryViewModel
{
public OrderHistoryViewModel(OrderEvent orderEvent)
{
// Here's my doubt
}
public string Date { get; protected set; }
public string Description { get; protected set; }
public string Amount { get; protected set; }
}
switchやifのような臭いことをせずに、PaymentEventのAmountプロパティなど、具象クラスから特定のプロパティにアクセスするにはどうすればよいですか?
ありがとう!