I am trying to access a property of a nested class through reflection while looping but cannot find a way to do so. I am much more familiar with JavaScript than C# so I will explain my problem in JS terms and show what I have tried with C#.
What I want to accomplish with working JavaScript:
var myObj = {
prop1: {p1: 0, p2: 1, p3: 2},
prop2: {p1: 0, p2: 2, p3: 4},
prop3: {p1: 0, p2: 4, p3: 8}
};
console.log(myObj.prop2.p2); //2
for( prop in myObj ) {
//Since I know the inner properties are the same
myObj[prop].p1++;
myObj[prop].p2++;
myObj[prop].p3++;
}
console.log(myObj.prop2.p2); //3
Here is what I have tried in C#, but with no luck:
class myObj
{
public class myPropObj
{
public int p1 {get; set;}
public int p2 {get; set;}
public int p3 {get; set;}
public myPropObj(int one, int two, int three)
{
p1 = one;
p2 = two;
p3 = three;
}
}
public myPropObj prop1 = new myPropObj(0, 1, 2);
public myPropObj prop2 = new myPropObj(0, 2, 4);
public myPropObj prop3 = new myPropObj(0, 4, 8);
}
--------------------------------------------------------------
//Not working
myObj myObject = new myObj();
Console.WriteLine(myObject.prop2.p2); //2
foreach( var prop in typeof(myObject).GetProperties() )
{
//I am thinking I need to cast it to the same type as nested class, but unsure how to do this
((myObject.myPropObj)prop).p1++;
((myObject.myPropObj)prop).p2++;
((myObject.myPropObj)prop).p3++;
}
Console.WriteLine(myObj.prop2.p2); //3
Thank you very much for taking the time to help me.
myObject.prop1.p1++;, etc? Is it because you want to loop?Console.WriteLine(myObj.prop2.p2);Change it toConsole.WriteLine(myObject.prop2.p2);and it'll work. No Reflection needed.prop1,prop2, andprop3"properties" are actually fields.