//Соединение входых данных и данных о типе объекта public void getAssociation() { //инициализируем массив выходных данных arrOutputData = new List <TagBase>(); if (SelectedInputData.Count > 0) { for (int i = 0; i < SelectedInputData.Count; i++) { //получим индекс типа объекта для соединения int typeIndex = arrTagType.FindIndex(x => x.nameType.Contains(SelectedInputData[i].Type)); if (typeIndex == -1) { break; //если такой тег не описан, пропускаем этот объект } //инициализируем смещение int offset = 0; //Составим базу одного объекта TagBase tagBase_oneObject = new TagBase(); //Установим имя объекта tagBase_oneObject.nameTagBase = SelectedInputData[i].Tag; //пробежимся по свойствам соединенного объекта //составим выходной массив foreach (var selected_propertiesTag in arrTagType[typeIndex].propertiesTag) { //создадим один тег SingleTag singleTag = new SingleTag(SelectedInputData[i].Tag + "." + selected_propertiesTag.Key, offset.ToString()); //сместим на размер типа данных offset += SizeOf.getSizeOfType(selected_propertiesTag.Value); tagBase_oneObject.addTagSequence(singleTag); } arrOutputData.Add(tagBase_oneObject); } } }
//Добавить тег в последовательность public void addTagSequence(SingleTag _tag) { preparedTagBase.Add(_tag); }