void ShowObjectProps(object o)
{
Type type = o.GetType();
PropertyInfo[] pi = type.GetProperties();
for(int i=0; i < pi.Length; ++i)
{
object ret = null;
object[] atts;
try
{
atts = pi[i].GetCustomAttributes(typeof(ObjViewerAttribute), true);
ret = type.InvokeMember(pi[i].Name, BindingFlags.GetProperty, null, o, new object [] {});
if (atts.Length == 0)
{
AddProp(pi[i].Name, (ret==null)?"null":ret.ToString());
}
else
{
ObjViewerAttribute att = (ObjViewerAttribute)atts[0];
if(att.Hide == false)
{
string sName, sVal;
if (att.Rename)
{
sName = att.Name;
}
else
{
sName = pi[i].Name;
}
sVal = ret.ToString();
if (att.Hex)
{
if (ret is Int16) sVal = "0x"+((Int16)ret).ToString("X");
if (ret is Int32) sVal = "0x"+((Int32)ret).ToString("X8");
if (ret is Int64) sVal = "0x"+((Int64)ret).ToString("X");
if (ret is UInt16) sVal = "0x"+((UInt16)ret).ToString("X");
if (ret is UInt32) sVal = "0x"+((UInt32)ret).ToString("X8");
if (ret is UInt64) sVal = "0x"+((UInt64)ret).ToString("X");
}
AddProp(sName, sVal);
}
}
}
catch(Exception e)
{
ret = e;
}
}
}