caI have seen several examples of reflection on here but cant seem to get them to work for my exact issue...
example of a solution I looked at
My 3 classes...
 public class Row
    {
        public string Cell1  = "cat";//{ get; set; }
        public string Cell2 = "fish"; //{ get; set; }
        public string Cell3 = "dog";  //{ get; set; }
    }
    public class Grid
    {
        public Row Row1 = new Row();
        public Row Row2 = new Row();
        public Row Row3 = new Row();
    }
    public class SetOfGrids
    {
        public Grid g1 = new Grid();
        public Grid g2 = new Grid();
    }
How I can get the value...
SetOfGrids sog = new SetOfGrids();
 MessageBox.Show(sog.g1.Row1.Cell1);
The getproperty function for the link i thought might work...
public Object GetPropValue(String name, Object obj) {
    foreach (String part in name.Split('.')) {
        if (obj == null) { return null; }
        Type type = obj.GetType();
        PropertyInfo info = type.GetProperty(part);
        if (info == null) { return null; }
        obj = info.GetValue(obj, null);
    }
    return obj;
}
How I would like to get the value... (I get a null exception error.)
 string PathToProperty = "sog.g1.Row1.Cell1";
 string s = GetPropValue(PathToProperty, sog).ToString;
 MessageBox.Show(s);
Result should be "cat2"
Update changes the Row code to the following as suggested.
public class Row
    {
        public string Cell1  { get; set; }
        public string Cell2 { get; set; }
        public string Cell3 { get; set; }
       public  Row()
        {
            this.Cell1 = "cat";
            this.Cell2 = "dog";
            this.Cell3 = "fish";
        }
    }
 
     
     
    