在这个回答的评论中,有人说检查对象是否实现了接口,尽管很流行,但是是一件坏事。
以下是我认为是此做法的一个示例:
public interface IFoo
{
void Bar();
}
public void DoSomething(IEnumerable<object> things)
{
foreach(var o in things)
{
if(o is IFoo)
((IFoo)o).Bar();
}
}
作为一个之前使用过这种模式的人,我很好奇为什么这是不好的,并且搜索了一个好的例子或解释,但无法找到。
虽然我很可能误解了评论,但是否有人能提供一个例子或链接来更好地解释这个评论呢?
IEnumerable<IFoo>
替代。很可能没有任何理由不能这样做。 - user395760