using System.ComponentModel;
using System.Globalization;
public interface IReports
string TaskList(int tenantID, int employeeID,
DateTimeOffset DateStart,
bool? ShowCustomerNumber,
public static void Main()
var queryString = "ReportID=7&DateStart=2021-10-04&DateEnd=2021-12-21&FeatureID=1&ShowCustomerNumber=true&ShowEmployees=true&ShowComments=true&ts=1640086980970";
var dict = HttpUtility.ParseQueryString(queryString);
var parameters = typeof(IReports).GetMethod("TaskList").GetParameters();
foreach(var p in parameters)
if((p.ParameterType.IsClass || Nullable.GetUnderlyingType(p.ParameterType) != null) && dict[p.Name] == null)
Console.WriteLine("Parameter {0} with value null", p.Name);
else if(dict[p.Name] == null)
Console.WriteLine("Missing parameter {0}", p.Name);
TypeConverter obj = TypeDescriptor.GetConverter(p.ParameterType);
object val = obj.ConvertFromString(null, CultureInfo.InvariantCulture, dict[p.Name]);
Console.WriteLine("Parameter {0} with value {1}", p.Name, val);