/// <summary> /// Gets the value for a single macro symbol string. /// </summary> /// <returns>The expanded macro value.</returns> /// <param name="symbolStr">macro symbol string.</param> /// <param name="mcp">an object instance providing context for macro expansion.</param> /// <param name="mcp2">an object instance providing secondary context for macro expansion.</param> public static string GetValue(string symbolStr, IMacroContextProvider mcp, IMacroContextProvider mcp2 = null) { if (macroHandlers.ContainsKey(symbolStr)) { MacroHandler svp = macroHandlers[symbolStr]; if (svp != null) { try { return(svp.Invoke(mcp)); } catch (NotImplementedException) { if (mcp2 != null) { try { return(svp.Invoke(mcp2)); } catch (NotImplementedException) { } } return(symbolStr + "[srcDataUnknown]"); } } else { return(symbolStr + "[unhandled]"); } } else { return(symbolStr + "[undefined]"); } }