For instance, in my current class, there is a hashtable,
Hashtable t = GetHashable(); //get from somewhere.
var b = t["key"];
the type of b is hidden from my current class, it is unreachable, not a public class type.
but i want to get a value from b, for example b has a field call "ID", i need to get the ID from b.
is there anyway i can get it, reflection ???
If you don't know the type, then you'll need reflection:
object b = t["key"];
Type typeB = b.GetType();
// If ID is a property
object value = typeB.GetProperty("ID").GetValue(b, null);
// If ID is a field
object value = typeB.GetField("ID").GetValue(b);
In C# 4.0, this would just be:
dynamic b = t["key"];
dynamic id = b.ID; // or int if you expect int
Otherwise; reflection:
object b = t["key"];
// note I assume property here:
object id1 = b.GetType().GetProperty("ID").GetValue(b, null);
// or for a field:
object id2 = b.GetType().GetField("ID").GetValue(b);
Another easier approach is to have the type implement a common interface:
var b = (IFoo)t["key"];
var id = b.ID; // because ID defined on IFoo, which the object implements
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With