Как можно сделать автоматическую универсальную очищалку объектов?
В общем, на проекте есть объекты, которые возвращаются в пул и эти объекты реализуют метод Clean, где описана логика, как поля объекта сбрасываются к дефолтным значениям или коллекции вызывают метод Clean.
Вроде, все хорошо, но проблема в том, что при добавлении нового поля в класс можно забыть добавить его в метод Clean, а потом ловить странные баги на проекте.
Можно ли как-то сделать автоматическую очищалку, которая уберет необходимость в этом методе?
Я пробовал сделать ее через Expression Tree.
Компилировал и кешировал делегат для каждого типа.
Все работало, но проблема в том, что производительность, если замерять через BenchmarkDotNet была сильно хуже, что критично для пула объектов.
Например, вот вызов метода Clean для коллекции:
А вот очистка массива из 1-го значения, присвоением null'а этому одному элементу (тут разница менее критична):
Какие еще варианты можно рассмотреть?
Знаю, что можно из текста генерить классы, но имхо, это очень геморно поддерживать.

