Забавно, потому что другой пользователь StackOverflow показывает такой пример пару часов назад в своем вопросе .
Рассмотрим этот класс:
[Serializable]
class MyClass
{
//Serializable fields
public void Save()
{
//Saving data into file
}
public void Load()
{
//Loading data from file
}
}
Этот класс (MyClass) имеет несколько отдельных ролей:
Этот класс является сериализуемым
Этот класс может сохранять свое состояние в некотором хранилище
Во многих случаях это не очень хорошая идея, потому что мы не можем легко повторно использовать эту сериализуемую сущность, когда хотим изменить наше постоянное хранилище с простого двоичного файла на файл XML или на удаленное хранилище.(например, через WCF).
Вы можете создать подклассы, что-то вроде MyClassWCFSaver, но даже в этом случае намного проще использовать сериализуемый класс MyClass и независимую иерархию MyClassSavers (с несколькими различными подклассами для xml, двоичного илиХранилища WCF)
Кстати, поэтому во многих ORM мы часто отличаем сущности от хранилища (см. Шаблон хранилища ).