我有一个包含一系列(基类)车辆的Fleet类.阵列中的车辆是车辆的子类:平原,火车和汽车.该阵列是私有的,但Fleet类必须提供一种方法来获取给定类型的车辆.
就像是:
class Fleet
{
private Vehicle[] _vehicles;
// returns the vehicles of the specified subclass
public ???? Get(????)
{
return ????
}
}
Fleet fleet = new Fleet("fleet.def");
Trains[] trains = fleet.Get(Trains); // looks clean but isn't possible
Plains[] plains = fleet.Get<Plains>(); // looks okay but don't know
// how to implement
Run Code Online (Sandbox Code Playgroud)
(我正在使用数组,但实际上任何可以迭代的集合类型都很好.)
现在,正如您所看到的,我完全不知道如何实现这一点.我正在为Get方法寻找一个优雅的解决方案,效率并不是真正的问题.请详细说明解决方案中涉及的关键技术,以便我可以在我的C#书中查找它们......
谢谢!
dh.*_*dh. 12
你的Fleet.Get()会是这样的
public IEnumerable<T> Get<T>()
{
return _vehicles.OfType<T>();
}
Run Code Online (Sandbox Code Playgroud)