One thing that has bugged me with .NET development is making a class that I am using over some boundry (i.e. com+ / remoting / web services / etc) and getting the exception that the class I am exposing is not marked as serializeable. Its simple to fix but still a pain.
I have been trying to think of a good reason why classes were not serializeable by default. There should be no performance issue with this as the only time an object should be checked if it needs to be serialized is... when it needs to be serialized. You could not want to expose a class over a boundary but then we should have an attribute called [NotSerializeable()]. The only thing I have come up with so far is that it adds size to the assembly and might take a bit longer to JIT the file while running.
Anyone else have any theories on this?