// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.md in the project root for license information. using System; using System.Collections.Generic; using System.Linq; using Microsoft.AspNet.SignalR.Json; namespace Microsoft.AspNet.SignalR.Hubs { public class DefaultParameterResolver : IParameterResolver { /// /// Resolves a parameter value based on the provided object. /// /// Parameter descriptor. /// Value to resolve the parameter value from. /// The parameter value. public virtual object ResolveParameter(ParameterDescriptor descriptor, IJsonValue value) { if (descriptor == null) { throw new ArgumentNullException("descriptor"); } if (value == null) { throw new ArgumentNullException("value"); } if (value.GetType() == descriptor.ParameterType) { return value; } return value.ConvertTo(descriptor.ParameterType); } /// /// Resolves method parameter values based on provided objects. /// /// Method descriptor. /// List of values to resolve parameter values from. /// Array of parameter values. public virtual IList ResolveMethodParameters(MethodDescriptor method, IList values) { if (method == null) { throw new ArgumentNullException("method"); } return method.Parameters.Zip(values, ResolveParameter).ToArray(); } } }