예제 #1
0
        public void TestLinkContent()
        {
            LinkContent stringLink = new LinkContent("test и тест");

            Assert.AreEqual("test и тест", LinkContent.ToString(stringLink.Data));

            LinkContent DoubleLink = new LinkContent(123.321d);

            Assert.AreEqual(123.321d, LinkContent.ToDouble(DoubleLink.Data));
        }
예제 #2
0
        /// <summary>
        /// Функция для поиска значения ссылки по отношению, например в констукции bittersweet_apple => nrel_price:[5,5];
        /// </summary>
        /// <param name="node">это адрес узла, например,  bittersweet_apple у которого есть ссылка, например [5,5]</param>
        /// <param name="predicate">это отношение, например nrel_price, которое поясняет, что это за ссылка</param>
        /// <returns></returns>
        private double FindValueByPredicate(ScAddress node, ScAddress predicate)
        {
            double value = double.NaN;
            //итерируем конструкцию
            var template           = new ConstructionTemplate(node, ElementType.ConstantCommonArc, ElementType.Link, ElementType.PositiveConstantPermanentAccessArc, predicate);
            var cmdIterateElements = new IterateElementsCommand(template);
            var rspIterateElements = (IterateElementsResponse)client.Send(cmdIterateElements);

            //если число конструкций равно 1, то ищем значение ссылки

            if (rspIterateElements.Constructions.Count() == 1)
            {
                var cmdGetValue = new GetLinkContentCommand(rspIterateElements.Constructions[0][2]);
                var rspGetValue = (GetLinkContentResponse)client.Send(cmdGetValue);
                value = LinkContent.ToDouble(rspGetValue.LinkContent);
            }
            if (predicate.Offset == 2087)
            {
                int i = 0;
                i = 1;
            }
            return(value);
        }