How can I cast (or convert, if cast not possible or reasonable) an object
into its runtime type? I can get runtimeType
using reflection, but can't figure out how to get List<string>
using property.GetValue
- I know that I could explicitly do as List<String>
but this is for a sort-of soft-code engine where the types are not known until runtime.
Any help is appreciated - thanks! (but looking for code solutions please, not "you shouldn't do it this way..." answers)
// trimmed-down example class
class Bus { public List<string> Passengers {get;set;} }
// create new instance of class
var obj = new Bus();
// get property value using reflection
var className = "Bus";
var assemblyName = "MyAssembly";
var listPropertyName = "Passengers";
var property = GetType(obj).GetProperty($"{listPropertyName}");
var runtimeType = Type.GetType($"{obj.GetType().FullName},{assemblyName}");
// returns object, but I want List<string> instead
// (or whatever it is; could be different types like T, List<T>, etc.
property.GetValue(obj);
// doesn't work, expects compile-time type
property.GetValue(obj) as runtimeType;
Aucun commentaire:
Enregistrer un commentaire