Причина, по которой самовыполняемый «формат сохранения», как правило, плохая, заключается в том, что сегодня ваша функция «Размытие» может выглядеть следующим образом:
public class Blur
{
int Amount = 5;
}
но в будущем вы могли бы улучшить свою систему размытия, чтобы вместо этого иметь что-то вроде:
public class Blur
{
int HorizontalAmount = 5;
int VerticalAmount = 10;
}
и теперь, когда вы запустите этот сохраненный файл, он больше не будет компилироваться, потому что больше нет свойства 'Amount'. Затем, чтобы получить обратную совместимость, вам нужно «интерпретировать» значение Amount, чтобы оно теперь означало HorizontalAmount = 5 AND VerticalAmount = 5 (или что угодно).
Так что на самом деле, в конечном счете, вам будет лучше иметь интерпретированный формат файла с самого начала.