Reputation: 93
I have read several posts and just can't seem to come to a solution. I have this custom class:
public class DBValues
{
public DateTime DB_MfgDateTime;
public string DB_PartNumber;
public string DB_LotNumber;
public string DB_BayResult;
public string DB_BrakeSwitch;
public string DB_SpeedSwitch;
public string DB_RTC;
public string DB_RFID;
public string DB_TestSpin;
public string DB_LEDs;
public int DB_LedADC;
public string DB_48Vstate;
public double DB_48V;
public string DB_12Vstate;
public double DB_12V;
public double DB_PLCV;
public double DB_OpAmpV;
public string DB_HandleUID;
public string DB_StationID;
public string DB_BayNumber;
public string DB_VerifyMfgInfo;
public DateTime DB_BuildTime;
public string DB_FWVerify;
public string DB_FWVersion;};
DBValues db = new DBValues();
And throughout I assign values like so: db.DB_SpeedSwitch = "PASS"; I don't want to fundamentally change how I'm assigning values but I would like to spit out the values for debug purposes. Something like:
foreach (var val in db)
{
Debug.WriteLine(val.ToString();
}
I've tried implementing IEnumerable and making a new list of DBValues and I get close but my GetEnumerator chokes with OverflowException. I figured out why that was but not sure how to fix it. I read about a forech and a yield return but that's not working out either.
public IEnumerator<DBValues> GetEnumerator()
{
//throw new NotImplementedException();
foreach (var item in ??????)
{
yield return item;
}
//return GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
//throw new NotImplementedException();
return GetEnumerator();
}
Need some help!
Upvotes: 0
Views: 156
Reputation: 666
You can use reflection for such purposes. Try to something like this:
FieldInfo[] fields = db.GetType().GetFields(BindingFlags.Public |
BindingFlags.NonPublic |
BindingFlags.Instance);
foreach(var field in fields)
{
Debug.WriteLine(field.GetValue(db));
}
Upvotes: 3