Как можно сделать автоматическую универсальную очищалку объектов?

В общем, на проекте есть объекты, которые возвращаются в пул и эти объекты реализуют метод Clean, где описана логика, как поля объекта сбрасываются к дефолтным значениям или коллекции вызывают метод Clean.

Вроде, все хорошо, но проблема в том, что при добавлении нового поля в класс можно забыть добавить его в метод Clean, а потом ловить странные баги на проекте.

Можно ли как-то сделать автоматическую очищалку, которая уберет необходимость в этом методе?

Я пробовал сделать ее через Expression Tree.

Компилировал и кешировал делегат для каждого типа.

Все работало, но проблема в том, что производительность, если замерять через BenchmarkDotNet была сильно хуже, что критично для пула объектов.

Например, вот вызов метода Clean для коллекции:

введите сюда описание изображения

А вот очистка массива из 1-го значения, присвоением null'а этому одному элементу (тут разница менее критична):

введите сюда описание изображения

Какие еще варианты можно рассмотреть?

Знаю, что можно из текста генерить классы, но имхо, это очень геморно поддерживать.


Ответы (0 шт):