protected OperationInfo(MethodInfo underlyingMethod, Url url, string urlTemplate, Regex templateRegex, params ValueInfo[] values) : base(url)
{
if (underlyingMethod == null)
{
throw new ArgumentNullException("underlyingMethod");
}
if (!typeof(IController).IsAssignableFrom(underlyingMethod.DeclaringType))
{
throw new ArgumentOutOfRangeException("underlyingMethod");
}
if (templateRegex == null)
{
throw new ArgumentNullException("templateRegex");
}
UnderlyingMethod = underlyingMethod;
UrlTemplate = urlTemplate;
TemplateRegex = templateRegex;
var arguments = new List<ArgumentInfo>();
var results = new List<ResultInfo>();
Arguments = arguments;
Results = results;
foreach (var value in values ?? new ValueInfo[0])
{
value.Method = UnderlyingMethod;
if (value is ResultInfo)
{
results.Add((ResultInfo)value);
}
else
{
arguments.Add((ArgumentInfo)value);
}
}
}