You’re trying to set the value of the propertyinfo value’s. Because you’re overwriting the businessObject
PropertyInfo fieldPropertyInfo = businessObject.GetType().GetProperties()
.FirstOrDefault(f => f.Name.ToLower() == piecesLeft[0].ToLower());
// The result should be stored into another variable here:
businessObject = fieldPropertyInfo.GetValue(businessObject, null);
fieldPropertyInfo.SetValue(businessObject, replacementValue, null);
It should be something like:
PropertyInfo fieldPropertyInfo = businessObject.GetType().GetProperties()
.FirstOrDefault(f => f.Name.ToLower() == piecesLeft[0].ToLower());
// also you should check if the propertyInfo is assigned, because the
// given property looks like a variable.
if(fieldPropertyInfo == null)
throw new Exception(string.Format("Property {0} not found", f.Name.ToLower()));
// you are overwriting the original businessObject
var businessObjectPropValue = fieldPropertyInfo.GetValue(businessObject, null);
fieldPropertyInfo.SetValue(businessObject, replacementValue, null);