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