使用此代码,我通过其名称获取某个对象的属性:
string propName = "Buttons"; // getting this runtime
Type t = container.GetType();
PropertyInfo p = t.GetProperty(propName);
object prop = p.GetValue(container, null);
属性的类型取决于属性名称,但所有属性都实现了IList
接口,因此它们都有Add()
方法。现在我希望能够使用此方法向该属性添加元素。但是我不能在object
类型上调用这个方法。我需要以某种方式将其转换为运行时,但在此之前我必须以某种方式使用prop.Add()
,这当然会触发编译错误。有没有办法在运行时独立于对象类型调用方法(当然要确保对象具有该方法)。
PS如果问题不清楚,我可以添加更多细节。