Example #1
0
        public static DescriptsonCalculatedPropertyTest <TTarget> CreateFrom(JProperty jProperty)
        {
            var path     = jProperty.Name.Substring(0, jProperty.Name.Length - 1);
            var getValue = DescriptsonPropertyManager <TTarget> .ParseAccessPath(path);

            var comparisonType = (DescriptsonComparisonType)jProperty.Name[jProperty.Name.Length - 1];
            var calculation    = (IDescriptsonCalculation <TTarget, object>)DescriptsonCalculation.Make(typeof(TTarget), getValue.Body.Type, (JArray)jProperty.Value);

            return(new DescriptsonCalculatedPropertyTest <TTarget>(getValue, comparisonType, calculation));
        }
Example #2
0
        private static DescriptsonCalculatedProperty <TObject>[] getCalculatedProperties <TObject>(JsonReader reader) where TObject : DescriptsonObject <TObject>, new()
        {
            var calculatedProperties = new List <DescriptsonCalculatedProperty <TObject> >();

            while (reader.Read() && (reader.TokenType != JsonToken.EndObject))
            {
                if (reader.TokenType != JsonToken.PropertyName)
                {
                    throw new InvalidOperationException("Unknown JObject conversion state");
                }

                var jProperty = JProperty.Load(reader);

                var setupProperty = DescriptsonPropertyManager <TObject> .ParseWritePath(jProperty.Name);

                var calculation = DescriptsonCalculation.Make(typeof(TObject), setupProperty.Body.Type.GetGenericArguments()[1], (JArray)jProperty.Value);

                calculatedProperties.Add(new DescriptsonCalculatedProperty <TObject>(setupProperty.Compile(), calculation));
            }

            return(calculatedProperties.ToArray());
        }
Example #3
0
        public static DescriptsonPropertyAccess <TTarget, TResult> CreateFrom(IEnumerable <JToken> jTokens)
        {
            var getValue = DescriptsonPropertyManager <TTarget> .ParseAccessPath(jTokens.Single().Value <string>());

            return(new DescriptsonPropertyAccess <TTarget, TResult>(getValue));
        }