All fields that cannot be serialized directly should have the NonSerializedAttribute. Types that have the SerializableAttribute ...

All fields that cannot be serialized directly should have the NonSerializedAttribute. Types that have the SerializableAttribute should not have fields of types that do not have the SerializableAttribute unless the fields are marked with the NonSerializedAttribute.