public T Find <T>(TemplateParameter parameter, T defaultValue)
 {
     if (!_parameters.ContainsKey(parameter.ToString()))
     {
         return(defaultValue);
     }
     return((T)_parameters[parameter.ToString()]);
 }
 public TemplateParameters AndResolve(TemplateParameter parameter, Func <TemplateParameters, object> resolver)
 {
     if (_parameters.ContainsKey(parameter.ToString()))
     {
         _parameters[parameter.ToString()] = resolver(this);
     }
     else
     {
         _parameters.Add(parameter.ToString(), resolver(this));
     }
     return(this);
 }
 public TemplateParameters And(TemplateParameter parameter, object value)
 {
     if (_parameters.ContainsKey(parameter.ToString()))
     {
         _parameters[parameter.ToString()] = value;
     }
     else
     {
         _parameters.Add(parameter.ToString(), value);
     }
     return(this);
 }
 public bool HasValue(TemplateParameter parameter, string value) => Has(parameter) && (string)_parameters[parameter.ToString()] == value;
 public bool Has(TemplateParameter parameter) => _parameters.ContainsKey(parameter.ToString()) && _parameters[parameter.ToString()] != null && _parameters[parameter.ToString()].ToString().Trim() != string.Empty;
 public T Find <T>(TemplateParameter parameter) => (T)_parameters[parameter.ToString()];