Estoy escribiendo un código para un constructor de clase que recorre todas las propiedades de la clase y llama a un método estático genérico que rellena mi clase con datos de una API externa. Así que tengo esto como una clase de ejemplo:Reflexión y tipos genéricos
public class MyClass{
public string Property1 { get; set; }
public int Property2 { get; set; }
public bool Property3 { get; set; }
public static T DoStuff<T>(string name){
// get the data for the property from the external API
// or if there's a problem return 'default(T)'
}
}
Ahora en mi constructor Quiero algo como esto:
public MyClass(){
var properties = this.GetType().GetProperties();
foreach(PropertyInfo p in properties){
p.SetValue(this, DoStuff(p.Name), new object[0]);
}
}
así que el constructor anterior se produce un error porque no voy a suministrar la tipo genérico.
Entonces, ¿cómo paso en el tipo de la propiedad?
En este momento la cuestión es un poco confuso, es que hay algunos errores tipográficos en el segundo código ¿retazo? – smaclell
Sí, creo que quiso escribir "MyClass.DoStuff (p.Name)" como el segundo parámetro para p.SetValue(). –
Sí, cometí un error en el segundo fragmento de código. –