Reflexão simples via entrada de string C #

public class YourClass
{
private SomeCustomClass _person;
public SomeCustomClass Person;
{
get{return _person;}
set{_person = value;}
}

public YourClass()
{
_person
= new SomeCustomClass();
}

/***** HERE IS WHERE THE MAGIC HAPPENS *****/
public object GetPropertyValue(object SourceClass, string propName)
{
return SourceClass.GetType().GetProperty(propName).GetValue(SourceClass, null);
}
}

//HOW TO USE:

YourClass model = new YourClass();
SomeCustomClass demo = (SomeCustomClass)model.GetPropertyValue(model, "Person");

This is usefull when you have to get properties based on some Enum you have on your application.

//ITERATING OVER ENUM:

YourClass model = new YourClass();
foreach (YourEnum val in Enum.GetValues(typeof(YourEnum)))
{
ISomeInterface status = (ISomeInterface)model.GetPropertyValue(model, val);
}