Пример #1
0
        /// <inheritdoc />
        public void Visit <T>(LinqServerBehaviorAttribute behaviorAttribute, IIriTemplateMapping templateMapping, DescriptionContext descriptionContext)
        {
            IClass range = null;
            Uri    uri   = null;

            switch (behaviorAttribute.Operation)
            {
            case LinqOperations.Filter:
                range = (descriptionContext.ContainsType(typeof(string)) ? descriptionContext[typeof(string)] :
                         descriptionContext.TypeDescriptionBuilder.BuildTypeDescription(descriptionContext.ForType(typeof(string))));
                uri = new Uri(OData + "$filter");
                break;

            case LinqOperations.Skip:
                uri = new Uri(OData + "$skip");
                break;

            case LinqOperations.Take:
                uri = new Uri(OData + "$top");
                break;
            }

            if (range == null)
            {
                range = (descriptionContext.ContainsType(typeof(T)) ? descriptionContext[typeof(T)] :
                         descriptionContext.TypeDescriptionBuilder.BuildTypeDescription(descriptionContext.ForType(typeof(T))));
            }

            templateMapping.Property = templateMapping.Context.Create <Rdfs.IProperty>(uri);
            templateMapping.Property.Range.Add(range);
        }