/// <summary> /// Returns an evaluation context that contains bindings for 'standard library' functions, for instance ID and randomness functions, /// and bindings for the given properties (which have been parsed into properly typed values). /// </summary> public static EvaluationContext ContextFromProperties(IDictionary <string, string> properties, double id, Random random, IDictionary <string, object> globals) { var evaluationContext = new EvaluationContext( properties?.ToDictionary( kv => kv.Key, kv => PropertyExtensions.ParseProperty(kv.Value)), _globalsContext); var instanceFunctions = new InstanceFunctions(id, random, globals); NativeUtils.RegisterInstanceMethods(evaluationContext, instanceFunctions); return(evaluationContext); }
/// <summary> /// Returns an evaluation context that contains bindings for 'standard library' functions, for instance ID and randomness functions, /// and bindings for the given properties (which have been parsed into properly typed values). /// </summary> public static EvaluationContext ContextFromProperties( IDictionary <string, string> properties, double id, double sequenceNumber, Random random, IDictionary <string, object> globals, ILogger logger, EvaluationContext parentContext = null) { var typedProperties = properties?.ToDictionary( kv => kv.Key, kv => PropertyExtensions.ParseProperty(kv.Value)); var evaluationContext = new EvaluationContext(typedProperties, parentContext ?? _globalsContext); var instanceFunctions = new InstanceFunctions(id, sequenceNumber, random, typedProperties, globals, logger); NativeUtils.RegisterInstanceMethods(evaluationContext, instanceFunctions); return(evaluationContext); }