protected override IEnumerable <XmlPortNode> CreateItems()
        {
            var xmlPortFieldElement = new XmlPortFieldElement(Name, GetIndentation(), ID);

            xmlPortFieldElement.Properties.AutoCalcField   = NullableBooleanFromSwitch(nameof(AutoCalcField));
            xmlPortFieldElement.Properties.DataType        = DataType;
            xmlPortFieldElement.Properties.FieldValidate   = NullableBooleanFromSwitch(nameof(FieldValidate));
            xmlPortFieldElement.Properties.MaxOccurs       = MaxOccurs;
            xmlPortFieldElement.Properties.MinOccurs       = MinOccurs;
            xmlPortFieldElement.Properties.NamespacePrefix = NamespacePrefix;
            xmlPortFieldElement.Properties.OnAfterAssignField.Set(OnAfterAssignField);
            xmlPortFieldElement.Properties.OnBeforePassField.Set(OnBeforePassField);
            xmlPortFieldElement.Properties.SourceField.FieldName         = SourceFieldName;
            xmlPortFieldElement.Properties.SourceField.TableVariableName = SourceFieldTableVariableName;
            xmlPortFieldElement.Properties.Unbound = NullableBooleanFromSwitch(nameof(Unbound));
            xmlPortFieldElement.Properties.Width   = Width;

            yield return(xmlPortFieldElement);

            if (ChildNodes != null)
            {
                var variables = new List <PSVariable>()
                {
                    new PSVariable("NodeIndentation", GetIndentation() + 1)
                };
                var childNodes = ChildNodes.InvokeWithContext(null, variables).Select(c => c.BaseObject);


                foreach (var childNode in childNodes.OfType <XmlPortNode>())
                {
                    yield return(childNode);
                }
            }
        }
예제 #2
0
        public static void Write(this XmlPortFieldElement xmlPortFieldElement, CSideWriter writer)
        {
            var relevantProperties = xmlPortFieldElement.Properties.Where(p => p.HasValue);

            WriteDeclaration(xmlPortFieldElement.ID, xmlPortFieldElement.NodeName, xmlPortFieldElement.IndentationLevel, "Element", "Field", relevantProperties.Any(), writer);
            relevantProperties.Write(PropertiesStyle.Field, writer);
            writer.Write(IndentationAfterLastTrigger(relevantProperties));
            writer.WriteLine("}");
            writer.Unindent();
            writer.InnerWriter.WriteLine();
        }