Алгоритм анализа параметров C#

Здравствуйте. Подскажите пожалуйста как составить алгоритм?
Суть такая: Есть объект со своей внутренней структурой и логикой.
Он имеет некоторое количество параметров числовых.
У каждого объекта своя особенная логика и свое количество параметров.

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

Сам класс параметров вот такой:

 class AnalitycParameter
    {
        public string Name;
        public double MinValue;
        public double MaxValue;
        public double StepValue;
    }

Сейчас приходится писать код в виде набора циклов

for (int w1 = minw1; w1 < maxw1; w1 += stepw1)
   for (int w2 = minw2; w2 < maxw2; w2 += stepw2)                    
      for (double p = minP; p <= maxP; p += stepP)
        for (double l = minL; l >= maxL; l -= stepL)
             {
                    тут проверка и получение результатов
             }

Пытался как то через рекурсию сделать но что то так и не выродил решения.
Еще в решении через кучу циклов последний цикл я оборачиваю в Task чтобы можно было запускать на многопроцессорных системах. Это тоже надо как то предусмотреть.
Вариант генерации и компиляции кода налету не особо хочется потому что код потом получится достаточно не читаемый. Хотелось бы проще …

Непонятно как проверка происходит, но это

обычно решается полиморфизмом.
То есть например создать какой-то общий интерфейс или базовый класс (или функцию передавать, Action/Func в C#) с функцией, которую каждый объект должен реализовать.
Тут например она может возвращать какое-то промежуточное представление параметров в виде массива (то, что последнему циклу нужно), еще как вариант можно с yield.
Ну и для самой логики проверки/получения результата (то, что внутри Task) может тоже нужна функция в этом интерфейсе.

Любой цикл можно заменить рекурсией, но что это даст само по себе? В некоторых случаях (деревья, …) это может упростить код, но просто замена цикла на рекурсию не решит проблему с тем, что для разных объектов нужны разные действия. Только можно наткнуться на переполнение стека если рекурсия глубокая, в C# вроде бы не гарантирована оптимизация хвостовой рекурсии.