ClrPlus.Scripting.Languages.PropertySheetV3.Mapping.View.GetChildPropertyNames C# (CSharp) Метод

GetChildPropertyNames() публичный Метод

public GetChildPropertyNames ( ) : IEnumerable
Результат IEnumerable
        public IEnumerable<string> GetChildPropertyNames()
        {
            return map.Keys.Where( each => !each.StartsWithNumber());
        }

Usage Example

Пример #1
0
        internal static ProjectElement GetTargetItem(this ProjectTargetElement target, View view)
        {
            // get the member name and data from the view, and create/lookup the item.
            // return the item.
            switch (view.MemberName) {
                case "PropertyGroup":
                    break;
                case "ItemGroup":
                    break;
                case "AfterTargets":
                    break;

                default:
                    //

                    var taskName = view.MemberName;
                    if (TaskClasses.Value.ContainsKey(taskName.ToLower())) {
                        // for tasks we recognize
                        var tskType = TaskClasses.Value[taskName.ToLower()];

                        var tsk = target.AddTask(taskName);
                        var required = tskType.RequiredInputs.ToList();

                        foreach (var n in view.GetChildPropertyNames()) {
                            var prop = view.GetProperty(n);

                            if (n == "Condition") {
                                tsk.Condition = prop;
                                continue;
                            }

                            if (required.Contains(n)) {
                                required.Remove(n);
                            } else {
                                if (!tskType.OptionalInputs.Contains(n)) {
                                    Event<Warning>.Raise("Unknown Parameter", "Task '{0}' does not appear to have an input parameter '{1}'", taskName, n);

                                    // could we set some item collection based on these?
                                    // TODO: maybe.
                                }
                            }

                            tsk.SetParameter(n, prop.Values.CollapseToString(";"));
                        }

                        foreach (var r in required) {
                            Event<Warning>.Raise("Missing Parameter", "Task '{0}' is missing required input parameter '{1}'", taskName, r);
                        }

                        var outputs = tskType.Outputs.ToList();

                        foreach (var n in view.GetIndexedPropertyNames()) {
                            var prop = view.GetProperty(n);
                            // an output paramter.
                            var nam = prop.GetProperty(prop.GetChildPropertyNames().FirstOrDefault());

                            if (!tskType.Outputs.Contains(nam.Value)) {
                                Event<Warning>.Raise("Unknown Parameter", "Task '{0}' does not appear to have an output parameter '{1}'", taskName, nam.Value);
                            }

                            if (outputs.Contains(nam.Value)) {
                                outputs.Remove(nam.Value);
                            }

                            tsk.AddOutputProperty(nam.Value, nam.MemberName);
                            tsk.AddOutputItem(nam.Value, nam.MemberName);
                        }

                        foreach (var output in outputs) {
                            // add in any unreferenced outputs as themselves.
                            tsk.AddOutputProperty(output, output);
                            tsk.AddOutputItem(output, output);
                        }
                        return tsk;
                    }

                    // for tasks we don't recognize
                    var tsk2 = target.AddTask(taskName);

                    Event<Warning>.Raise("Unrecognized Task", "Task '{0}' is not recognized.", taskName);

                    foreach (var n in view.GetChildPropertyNames()) {
                        var prop = view.GetProperty(n);
                        if(n == "Condition") {
                            tsk2.Condition = prop;
                            continue;
                        }
                        tsk2.SetParameter(n, prop.Values.CollapseToString(";"));
                    }

                    foreach (var n in view.GetIndexedPropertyNames()) {
                        var prop = view.GetProperty(n);
                        // an output paramter.
                        var nam = prop.GetProperty(prop.GetChildPropertyNames().FirstOrDefault());
                        tsk2.AddOutputProperty(nam.Value, nam.MemberName);
                        tsk2.AddOutputItem(nam.Value, nam.MemberName);
                    }
                    return tsk2;

            }
            return null;
        }