public void SetStrategyParameter(string parameterName, object obj, object value)
{
var field = obj.GetType().GetField(parameterName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
var property = obj.GetType().GetProperty(parameterName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
if (field != null && field.GetCustomAttributes(typeof(ParameterAttribute), true).Any())
field.SetValue(obj, value);
else if (property != null && property.GetCustomAttributes(typeof(ParameterAttribute), true).Any())
property.SetValue(obj, value);
}