Lo que intento hacer es llamar al método de una propiedad, usando Reflection. Tengo el Control original (un ComboBox), el PropertyInfo de la propiedad (ComboBox.Items) y el nombre del método (ComboBox.Items.Add). He intentado con el siguiente código para obtener, modificar, configurar pero no funciona porque Items no tiene un setter.Usar Reflection para llamar a un método de una propiedad
PropertyInfo p = controlType.GetProperty(propertyName); // gets the property ('Items')
MethodInfo m = p.PropertyType.GetMethod(methodName); // gets the method ('Items.Add')
object o = p.GetValue(newControl, null); // gets the current 'Items'
m.Invoke(o, new object[] { newValue }); // invokes 'Add' which works
p.SetValue(newControl, o, null); // exception: 'Items' has no setter
¿Alguien tiene algún consejo?
Gracias
Así como una sugerencia, si usted está interesado en hacer llamadas como éste a través de la reflexión más fácil y está usando C# 4, es posible que desee para envolver esta funcionalidad reflejo en un DynamicObject. He escrito una publicación sobre cómo hacer eso aquí: http://mattmc3.blogspot.com/2011/03/fun-with-dynamicobject-and-making-net.html – mattmc3
Oooh, voy a echar un vistazo gracias ! – acron