Вопрос скорее просто по синтаксису, но что-то туплю.
Делаю метод для чтения параметров из строки запроса ASP.NET. Такой вариант работает:
protected bool TryLoadRequestParam<T>(string ParamName, out T ParamValue)
{
string paramValue = Request.Params[ParamName];
if (paramValue == null)
{
ParamValue = default(T);
return false;
}
try
{
ParamValue = (T)Convert.ChangeType(paramValue, typeof(T));
}
catch (InvalidCastException)
{
ParamValue = default(T);
return false;
}
return true;
}
Что в этом варианте не нравится.
Подавляющее большинство использований этой функции — либо string, либо int.
Хочется вставить перед try что-то в этом духе:
if (T это string) {ParamValue=paramValue; return}
if (T это int) return int.TryParse(paramValue, out ParamValue);
Но не могу это оформить с точки зрения синтаксиса. Как это можно сделать?
P.S. Вариант сделать 3 отдельные функции понимаю, но хочется все-таки одну (к тому же на нее уже код завязан).