Adf.Base.Messaging.XmlMessageHandler.CreateRecord C# (CSharp) Метод

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

private static CreateRecord ( MessageDefinition definition, System.Xml.Linq.XElement element ) : Adf.Core.Messaging.Record
definition Adf.Core.Messaging.MessageDefinition
element System.Xml.Linq.XElement
Результат Adf.Core.Messaging.Record
        private static Record CreateRecord(MessageDefinition definition, XElement element)
        {
            RecordDefinition recordDef = definition.FindRecord(element.Name.LocalName);
            TableDescriber table = new TableDescriber(recordDef.Name, DataSources.NoSource);

            Record record = recordDef.Create(new DictionaryState());

            record.State.Set(new ColumnDescriber("ID", table, isIdentity: true), Guid.NewGuid());

            foreach (XElement subelement in element.Elements())
            {
                FieldDefinition fieldDef = recordDef.FindField(subelement.Name.LocalName);
                if (fieldDef.Type == FieldDefinitionType.Record)
                {
                    RecordDefinition subRecordDef = definition.FindRecord(subelement.Name.LocalName);
                    if (subRecordDef.Repeats > 1 || subRecordDef.Repeats == -1)
                    {
                        // This element appears more than once
                        List<Record> existing = record.State.Get<List<Record>>(new ColumnDescriber(fieldDef.Name, recordDef.Name)) ?? new List<Record>();
                        // If not initialized, do so now

                        existing.Add(CreateRecord(definition, subelement));

                        record.State.Set(new ColumnDescriber(fieldDef.Name, recordDef.Name), existing);
                    }
                    else
                    {
                        Record value = CreateRecord(definition, subelement);
                        record.State.Set(new ColumnDescriber(fieldDef.Name, recordDef.Name), value);
                    }
                }
                else
                {
                    record.State.Set(new ColumnDescriber(fieldDef.Name, recordDef.Name), subelement.Value);
                }
            }

            return record;
        }