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); } } }
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(); }