Итак, у меня есть множество методов, все из которых принимают различные параметры разных типов данных, что я пытаюсь достичь, это способ вызова другого метода, проходящего во всех параметры, которые принимает текущий метод, а также его значения, и в этом случае я в конце концов буду выполнять различные типы проверки на основе типа данных параметра. Идея заключается в том, что у меня будет один метод проверки, который я смогу вызывать в начале каждого метода, вместо того, чтобы проходить каждый метод и проверять параметры по одному в каждом методе. Ниже приводится пример того, что я пытаюсь достичь, я огляделся и, похоже, нашел некоторые варианты использования с Reflection, но кажется, что передача типов параметров, а также их значений немного сложнее, и было интересно, если кто-либо еще столкнулись с аналогичной формой проблемы.Проверка входных параметров, заданных для метода C#
public void doStuffA(int a, string b, string c, bool d)
{
var params = ?
if (validateInput(params))
{
// do stuff
}
}
public void doStuffB(string x, string y, int z)
{
var params = ?
if (validateInput(params))
{
// do stuff
}
}
public bool validateInput(? params)
{
// do validation
}
Я не рекомендую это. Вы потеряете возможность проверки вашей проверки параметров посредством статического анализа. – Dai
Прежде всего: вы должны проверить аргументы, а не параметры. Сказав это, я согласен с Даем выше. Кроме того, если ваши классы придерживаются принципа единой ответственности, они, вероятно, не будут настолько большими, чтобы их методы могли извлечь выгоду из проверки общих аргументов. Не говоря уже о том, что «вы, скорее всего, будете программировать себя против стены и сделать рефакторинг вашего кода практически невозможным. –
пожалуйста, просим пожалуйста. Не делай этого. Вы можете создать некоторые проверки по умолчанию в методах, которые вы можете вызвать, но вы не хотите иметь один метод, который проверяет все остальные.Неправильно переносить эту ответственность. –