static public bool InspectSet(this IEnumerable item, int index, object value) { if (item != null) { IList list; if (item.Convert <IList>(out list)) { list[index] = value; return(true); } MethodInfo method = item.GetType().GetFilteredInstanceMethods( Filterer_MethodInfo.IsNamed("set_Item"), Filterer_MethodInfo.CanNthEffectiveParameterHold(0, typeof(int)), Filterer_MethodInfo.HasTwoEffectiveParameters() ).GetFirst(); if (method != null) { method.Invoke(item, new object[] { index, value }); return(true); } } return(false); }
static public bool InspectInsert(this IEnumerable item, int index, object value) { if (item != null) { MethodInfoEX method = item.GetType().GetFilteredInstanceMethods( Filterer_MethodInfo.IsNamed("Insert"), Filterer_MethodInfo.CanNthEffectiveParameterHold(0, typeof(int)), Filterer_MethodInfo.HasTwoEffectiveParameters() ).GetFirst(); if (method != null) { if (value == null) { value = method.GetEffectiveParameterType(1).GetDefaultValue(); } method.Invoke(item, new object[] { index, value }); return(true); } } return(false); }