private static void AddPositionalParams (XamlNodeStackItem obj, List<string> posParams)
{
Type objType = obj.Node.XamlType.UnderlyingType;
ParameterInfo[] constrParams = objType.GetConstructors()
.Select(ci => ci.GetParameters())
.Single(prms => prms.Length == posParams.Count);
for (int i = 0; i < constrParams.Length; i++) {
string paramName = constrParams[i].Name;
PropertyInfo paramProp = objType.GetProperties()
.SingleOrDefault(p => p.GetCustomAttribute<ConstructorArgumentAttribute>() != null &&
p.GetCustomAttribute<ConstructorArgumentAttribute>().ArgumentName == paramName);
if (paramProp != null)
paramName = paramProp.Name;
else
paramName = char.ToUpper(paramName[0]) + paramName.Substring(1);
obj.JObject.Add(new JProperty(paramName, posParams[i]));
}
}