Look here:
prop.SetValue(prop, r.Text, null);
SetValue
is supposed to take the object you want to change as the first parameter, but you are passing the PropertyInfo
object. I believe your actual code should be:
prop.SetValue(contactInfo, r.Text, null);