@ acron, спасибо за отличный вопрос и ответ.Я хочу расширить ваше решение для немного другого сценария для всех, кто смотрит в будущее.
Столкнувшись с подобной проблемой в мире ASP.NET, я пытался найти общий способ загрузки системы ..Web.UI.Webcontrols.DropDownList ИЛИ System.Web.UI.HtmlControls.HtmlSelect В то время как оба они имеют свойство «Items» типа «ListItemCollection» с соответствующим «Add»метод, они не разделяют общий интерфейс (, поскольку они ДОЛЖНЫ ... эй, Microsoft ... ), чтобы можно было использовать приведение.
Дополнительная проблема, которую ваше решение не сделалоОбеспечить перегрузку метода Add.
Без перегрузок ваша строка: MethodInfo m = p.PropertyType.GetMethod(methodName);
работает просто отлично.Но когда метод Add перегружен, вызывается дополнительный параметр, чтобы среда выполнения могла определить, какую перегрузку следует вызвать.
MethodInfo methInfo = propInfo.PropertyType.GetMethod("Add", new Type[] { typeof(ListItem) });