//Соединение входых данных и данных о типе объекта
        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);
                }
            }
        }
예제 #2
0
 //Добавить тег в последовательность
 public void addTagSequence(SingleTag _tag)
 {
     preparedTagBase.Add(_tag);
 }