在我的项目中,我使用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?我缺少的概念是什么?感谢您的任何提示或评论!
答案 0 :(得分:1)
一个选项可能是向BaseTrade
课程添加BaseAsset
列表,然后只要您的BaseTrade
有Price
,Quantity
和{ {1}}您应该能够将移动平均值计算移动到ExchangeRate
类。