我有一个名为iBlocks的接口数组,其中包含多个类(全部实现iBlocks接口)的对象。我想知道是否有可能,或者如何处理这种情况,在这种情况下,我需要为该数组中某个类的所有对象调用接口未涵盖的方法。
例如:
iBlocks = new iBlocks[1];
iBlocks[0] = new greenBlock();
iBlocks[1] = new yellowBlock();
foreach (greenBlock in iBlocks)
{
greenBlock.doStuff()
}
其中doStuff()是接口中未定义的方法,因为它在yellowBlock类中没有用。实际的界面非常出色,因为greenBlock和yellowBlock具有大量的共同特征。但是,我仍然希望访问每个类的特殊方面,而不必为每个对象类型创建完全独立的数组。
提前致谢!
最佳答案
您可以使用as
运算符。
foreach (var block in iBlocks)
{
var green = block as greenBlock;
if (green != null)
green.doStuff()
}
或在LINQ中
foreach (var green in iBlocks.OfType<greenBlock>())
{
green.doStuff()
}