Запутывающий API - это вечная проклятие для пользователей библиотек. Упростите, даже тривиально, людям возможность точно решить, что они хотят делать, учитывая предоставляемый вами интерфейс. Если они должны выбирать из длинного списка перегруженных функций, это, вероятно, слишком большая когнитивная нагрузка. Также стоит отметить, что C # 4 будет иметь поддержку необязательных и именованных параметров, поэтому ваша проблема System.Missing
исчезнет сама собой.
Это осуждается с точки зрения ООП?
ООП предпочитает Принцип единой ответственности , или SRP. Если у вас есть один класс со многими из этих функций, каждая из которых имеет много перегрузок, это говорит о том, что он может делать слишком много.
Снижается ли эффективность?
Если у вас много перегрузок для одного и того же метода, статически разрешает каждый вызов функции дольше (т. Е. "Какой метод с этим именем является правильным?"). Но это не окажет влияния во время выполнения на производительность, если они не виртуальные вызовы - то есть, когда компилятор может статически точно знать, что это будет за тип. В любом случае, я не думаю, что это должно быть вашим мотивирующим фактором здесь.