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

本文关键字:移动 基类 属性 | 更新日期: 2023-09-27 17:59:10

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

所有子类都有一个特定交易的列表(债券交易、基金交易等)

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类,它几乎是一样的,只是它会在StockTrades上迭代。备注:我还使用了一个BaseTrade类,所有特定的BondTrade、StockTrade等都继承自该类。

如何将这样的属性移动到BaseAsset我缺少什么概念?感谢您的任何提示或意见!

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

一个选项可能是将BaseTrade的列表添加到BaseAsset类,然后只要您的BaseTrade具有PriceQuantityExchangeRate,就应该能够将移动平均计算移动到BaseAsset类。