我有一个基类和2个(可能是3个)从该基类派生的其他类。
//Base Class
class RateInstrument
{
public string Ric { get; set; }
public string Tenor { get; set; }
public double Rate { get; set; }
public DateTime Date { get; set; }
public double Price { get; set; }
public double Bid { get; set; }
public double Ask { get; set; }
public RateInstrument(string tenor, double rate)
{
Tenor = tenor;
Rate = rate;
}
public RateInstrument(DateTime date, double price)
{
Date= date;
Price = price;
}
}
//Derived Class 1
class Swap : RateInstrument
{
public Swap(string tenor, double rate): base(tenor,rate)
{
}
}
//Derived Class 2
class Future: RateInstrument
{
public Future(DateTime date, double price): base(date,price)
{
}
}
有时我可能需要收集所有费率工具,有时只需收集每个单独的RateInstrument本身。 实际上我想要的是在Base类中使用一些方法来做到这一点但是我不完全确定如何去做。我很好地构建代码以帮助我学习等。任何帮助都将非常感激。
抱歉,我的意思是能够以速记方式实例化对象集合。特别是如果我必须一次创造100个。
答案 0 :(得分:2)
在C#3.5中,你并不需要特别做任何事情。 IEnumerable<RateInstrument>
会很好。
如果只想要特定的子类型,可以使用OfType扩展方法:
var swaps = instruments.OfType<Swap>();
答案 1 :(得分:1)
你现有的代码不是这样做的吗?
List<RateInstrument> instruments = new List<RateInstrument>();
instruments.Add(new Swap("bla", 100));
instruments.Add(new OtherSwap("bla2", 200));
var swapInstruments = from instrument in instruments where instrument Is Swap select instrument;