/// <summary> /// Evaluate a string given a profile id. /// </summary> /// <param name="profileId">The profile id to use for evaluation.</param> /// <param name="varString">The string to evaluate. Any tokens surrounded by '[' and ']' will be replaced with matching variables.</param> /// <returns>The evaluated string.</returns> public string EvaluateString(string profileId, string varString) { Func <string, string> getVal = s => { var v = GetValueByName(profileId, s); if (string.IsNullOrEmpty(v)) { if (onProfileStringEvaluation != null) { foreach (var i in onProfileStringEvaluation.GetInvocationList()) { var del = (ProfileStringEvaluationDelegate)i; v = del(s); if (!string.IsNullOrEmpty(v)) { return(v); } } } v = AddressablesRuntimeProperties.EvaluateProperty(s); } return(v); }; return(AddressablesRuntimeProperties.EvaluateString(varString, '[', ']', getVal)); }
public void RuntimeProperties_CanEvaluateReflection() { AddressablesRuntimeProperties.ClearCachedPropertyValues(); string expectedResult = ReflectableStringValue; string actualResult = AddressablesRuntimeProperties.EvaluateProperty("AddrRuntimePropertiesTests.AddrRuntimePropertiesTests.ReflectableStringValue"); Assert.AreEqual(expectedResult, actualResult); }
public void RuntimeProperties_EvaluatePropertyCanEvaluateSetValue() { AddressablesRuntimeProperties.ClearCachedPropertyValues(); string expectedResult = "myVal"; string key = "myName"; AddressablesRuntimeProperties.SetPropertyValue(key, expectedResult); string actualResult = AddressablesRuntimeProperties.EvaluateProperty(key); Assert.AreEqual(expectedResult, actualResult); }