Alba.Jaml.XamlGeneration.XamlGenerator.AddPositionalParams C# (CSharp) Метод

AddPositionalParams() приватный статический Метод

private static AddPositionalParams ( XamlNodeStackItem obj, List posParams ) : void
obj XamlNodeStackItem
posParams List
Результат void
        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]));
            }
        }