You know, I agree with you… Static classes can *certainly* be abused. Static classes are not a very “OO” friendly concept. That said, good API design is a compromise between pure OO design and usability. There are just some cases where the problem space doesn’t warrant full OO mapping… Check out System.IO.Path as an example.
We have used static classes a judiciously in the framework and it is good to see that pattern being enforced in the compiler.