ServiceStack.RestRoute.GetQueryProperties C# (CSharp) Method

GetQueryProperties() static private method

static private GetQueryProperties ( Type requestType ) : RouteMember>.IDictionary
requestType System.Type
return RouteMember>.IDictionary
        internal static IDictionary<string, RouteMember> GetQueryProperties(Type requestType)
        {
            var result = new Dictionary<string, RouteMember>(PclExport.Instance.InvariantComparerIgnoreCase);
            var hasDataContract = requestType.HasAttribute<DataContractAttribute>();

            foreach (var propertyInfo in requestType.GetPublicProperties())
            {
                var propertyName = propertyInfo.Name;

                if (!propertyInfo.CanRead) continue;
                if (hasDataContract)
                {
                    if (!propertyInfo.HasAttribute<DataMemberAttribute>()) continue;

                    var dataMember = propertyInfo.FirstAttribute<DataMemberAttribute>();
                    if (!IsNullOrEmpty(dataMember.Name))
                    {
                        propertyName = dataMember.Name;
                    }
                }

                result[propertyName.ToCamelCase()] = new PropertyRouteMember(propertyInfo)
                {
                    IgnoreInQueryString = propertyInfo.FirstAttribute<IgnoreDataMemberAttribute>() != null, //but allow in PathInfo
                };
            }

            if (JsConfig.IncludePublicFields)
            {
                foreach (var fieldInfo in requestType.GetPublicFields())
                {
                    var fieldName = fieldInfo.Name;

                    result[fieldName.ToCamelCase()] = new FieldRouteMember(fieldInfo)
                    {
                        IgnoreInQueryString = fieldInfo.FirstAttribute<IgnoreDataMemberAttribute>() != null, //but allow in PathInfo
                    };
                }

            }

            return result;
        }

Usage Example

Ejemplo n.º 1
0
        public static string ToReplyUrl(this object requestDto, string format = "json")
        {
            var requestType     = requestDto.GetType();
            var predefinedRoute = "/{0}/reply/{1}".Fmt(format, requestType.GetOperationName());
            var queryProperties = RestRoute.GetQueryProperties(requestDto.GetType());

            predefinedRoute += "?" + RestRoute.GetQueryString(requestDto, queryProperties);

            return(predefinedRoute);
        }
All Usage Examples Of ServiceStack.RestRoute::GetQueryProperties