C # pobierz i ustaw właściwość według nazwy zmiennej

Czy jest jakiś sposób, aby to zrobić? Próbuję przetestować, czy istnieje właściwość obiektu, a jeśli tak, chcę nadać mu wartość. (Może cała idea jest zła, jeśli prawda - dlaczego?)

class Info
{
    public string X1{ set; get; }
    public string X2{ set; get; }
    public string X3{ set; get; }
}

Dictionary<string, string> values = new Dictionary<string, string>();
values.Add("X1","blah1");
values.Add("X2","blah2");
values.Add("NotThere","blah3");

Info info = new Info();

foreach (var item in values)
{
  string propertyName = item.Key;
  string value = item.Value;
  if (info.GetType().GetProperty(propertyName) != null)  //this probably works
  {
        info.propertyName = value; //this doesn't, how to set it?
  }
}

questionAnswers(4)

yourAnswerToTheQuestion