3

我有一个名为 iBlocks 的接口数组,其中包含多个类的对象(它们都实现了 iBlocks 接口)。我想知道是否有可能,或者如何处理我需要为此数组中某个类的所有对象调用接口未涵盖的方法的情况。例如:

iBlocks = new iBlocks[1];
iBlocks[0] = new greenBlock();
iBlocks[1] = new yellowBlock();

foreach (greenBlock in iBlocks)
{
   greenBlock.doStuff()
}

其中 doStuff() 是接口中未定义的方法,因为它在 YellowBlock 类中没有用处。实际界面非常出色,因为 greenBlock 和 YellowBlock 有很多共同的功能。但是,我仍然希望访问每个类的某些特殊方面,而无需为每个对象类型创建一个完全独立的数组。提前致谢!

4

1 回答 1

6

您可以使用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()
}
于 2013-02-09T04:26:53.887 回答