2015-04-14 3 views
1

Есть ли способ определить, был ли изменен код, создающий класс? Как получить хеш своего контента.Определить, изменился ли класс (не объект)

У меня есть много классов, которые используются для генерации текстовых файлов. В настоящее время я пытаюсь определить способ для программы во время выполнения, чтобы определить, изменил ли кто-либо класс каким-либо образом с последнего поколения (тем самым зная, нужно ли снова создавать файлы или их можно оставить как они есть).

Пример:

  • Кто-то использует программу и создает много файлов. Кэш создается и сохраняется как файл, содержащий информацию о кеше для каждого класса, генерирующего файл.
  • Кто-то использует программу через несколько дней, и ничего не изменилось, поэтому кеш определяет для каждого файла, что их не нужно регенерировать.
  • Кто-то немного меняет один из классов, поэтому его результат должен немного отличаться.
  • В следующий раз, когда кто-то использует программу для создания тех конкретных файлов, созданных измененным классом, должен быть регенерирован.

Я знаю, что я мог бы использовать какое-то инкрементное решение для версии, но я действительно хочу, чтобы оно было более умным. Мне нужно, чтобы это работало даже при отладке в Visual Studio.

+0

Не могли бы вы использовать временную метку для файлов классов? – DGibbs

ответ

1

Рассчитайте контрольные суммы ваших файлов классов (используя md5, sha1, sha2 или что угодно), храните их где-то и восстанавливайте свои классы, если контрольные суммы не совпадают.

Все упомянутые алгоритмы на самом деле являются крипто-хешами, поэтому они устойчивы к столкновению. Таким образом, вероятность случайного несоответствия контрольной суммы очень низкая.

Смежные вопросы