Reflection på objekt der er ukendt indtil runtime
Jeg vil gerne lave en metode der modtager et object, finder ud af hvilket objekt det er, og kalder alle members på objektet.Her er hvad jeg har indtil videre:
private string ObjectToString(object o)
{
Type t = o.GetType();
string output = "ToString of "+t.Name+"\n";
foreach (PropertyInfo info in t.GetProperties())
{
output += info.ToString()+"\n";
}
return output;
}
Jeg giver metoden mit objekt der hedder UserManager der har et væld af metoder og properties af alle mulige forskellige typer.
Output er:
ToString of UserManager
Int32 GetHashCode()
Boolean Equals(System.Object)
System.String ToString()
System.Type GetType()
Godt nok bliver objektet identificeret som en "UserManager", men de metoder der tilsyneladende er på objektet, er kun dem der er på "object" og ikke dem der er på "UserManager".
Hvordan får jeg objektet konverteret rigtigt så objektets metoder kan identificeres og kaldes? Metoden må ikke have kendskab til det miljø den ligger i - det går altså ikke at begynde at hente type-arrays fra dens assembly, med mindre også det kan gøres runtime.
