如何将类似属性移动到基类

时间:2014-04-19 11:48:04

标签: c# asp.net-mvc inheritance

在我的项目中,我使用5个不同的子类来描绘金融资产:债券,基金,期货,期权和股票。每个都有很多共同之处,所以我创建了类" BaseAsset"并让所有资产类继承自该类。

所有子类都有特定交易清单(BondTrades,FundTrades等)。

public class Bond : BaseAsset
{
    // Bond-specific properties
    public double FaceValue { get; set; }
    public virtual List<BondTrade> Trades { get; set; }

子类还有一些属性,它们都实现了,并且只是略有不同,例如:

返回移动平均价格的属性。此移动平均价格是根据该类别的特定交易计算的,因此对于债券类来说,它看起来像这样:

public double movingAveragePrice
{
    get
       {
           foreach(BondTrade trade in this.Trades)
           {
               nominator += (trade.Price.Value * trade.Quantity) / trade.ExchangeRate;
               denominator += trade.Quantity;
           }
           return nominator / denominator;
       }
}

对于Stock-class来说,它几乎是相同的,只是它会迭代StockTrades。备注:我还使用BaseTrade类,所有特定的BondTrade,StockTrade等都继承该类。

我怎样才能将这样的属性移动到BaseAsset?我缺少的概念是什么?感谢您的任何提示或评论!

1 个答案:

答案 0 :(得分:1)

一个选项可能是向BaseTrade课程添加BaseAsset列表,然后只要您的BaseTradePriceQuantity和{ {1}}您应该能够将移动平均值计算移动到ExchangeRate类。