Пример #1
0
 public static Term From(MethodInfo methodInfo)
 {
     return(new Term(methodInfo.DeclaringType.FullName + "_" + methodInfo.Name)
     {
         Meanings = { TermFactory.From <Operation>() }
     });
 }
Пример #2
0
        public static SemanticProperty Create(string title, MethodParameter[] methodParameters, Uri uri, Term term)
        {
            var operationSemProp = SemanticProperty.CreateSet(term, new SemanticPropertiesSet()
            {
                SemanticProperty.Create <ActionUrl>((JToken)uri.ToString()),
                SemanticProperty.Create <DisplayText>((JToken)title),
            });

            var fields = new SemanticPropertiesSet();

            foreach (var methodParameter in methodParameters)
            {
                var fieldProperties = new SemanticPropertiesSet();
                methodParameter.Type.Switch(
                    text => fieldProperties.Add(SemanticProperty.CreateTerm <FieldKind, TextField>()),
                    password => fieldProperties.Add(SemanticProperty.CreateTerm <FieldKind, PasswordField>()),
                    select =>
                {
                    fieldProperties.Add(SemanticProperty.CreateTerm <FieldKind, SelectField>());
                    var optionsList = new SemanticPropertiesList();
                    foreach (var selectOption in select.Options)
                    {
                        optionsList.Add(new SemanticPropertiesSet
                        {
                            SemanticProperty.CreateValue <DisplayText>(selectOption.Description),
                            SemanticProperty.CreateValue <FieldValue>(selectOption.OptionId)
                        });
                    }
                    var options = SemanticProperty.CreateList <Options>(optionsList);

                    fieldProperties.Add(options);
                }
                    );
                fieldProperties.Add(SemanticProperty.CreateValue <FieldName>((JToken)methodParameter.UrlPart.ToString()));
                var field = SemanticProperty.CreateSet(methodParameter.Term, fieldProperties);
                fields.Add(field);
            }
            operationSemProp.Value.Add(SemanticProperty.CreateSet(TermFactory.From <Fields>(), fields));
            return(operationSemProp);
        }