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)); }
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()); }
public static DescriptsonPropertyAccess <TTarget, TResult> CreateFrom(IEnumerable <JToken> jTokens) { var getValue = DescriptsonPropertyManager <TTarget> .ParseAccessPath(jTokens.Single().Value <string>()); return(new DescriptsonPropertyAccess <TTarget, TResult>(getValue)); }