Универсальный не очень подходит для этого использования, потому что вы не можете вернуть универсальный тип, основанный на условии времени выполнения внутри универсального метода (так как метод должен быть скомпилирован с точным типом для запуска в первую очередь). 1001 *
Обычный подход заключается в использовании параметра out
для вашего списка и вашей строки, и ваш метод возвращает bool, указывающий, был ли возвращен список. Эти методы обычно имеют префикс Try...
. например,
bool TryGetList<T>(out IList<T> lst, out string Error) {
if (!somcondition) {
Error = "err!";
return false;
}
lst = ...
return true;
}
Другой метод состоит в простом использовании исключений, но они могут быть более дорогостоящими, если вы, вероятно, часто будете иметь ошибки. Например, ArgumentException
позволит вам указать, какой аргумент был недействительным, и вызывающий объект может проверить ParamName
перехваченного исключения, чтобы решить, что ему делать дальше.