Or, the best way is to use visitor pattern (http://www.dofactory.com/Patterns/PatternVisitor.aspx), especially if you cast your objects after doing "is". if (obj is MyType) { objOfMyType = (MyType)obj; ... } The visitor pattern will get rid of casts, and allow you to create new classes and not having to add if (obj is MyNewType) or case statements.