public static bool IsExistsIndexedValue(Object value, int index) { if (value == null) { return(false); } var asArray = value as Array; if (asArray != null) { return(asArray.Length > index); } var asString = value as string; if (asString != null) { return(asString.Length > index); } var asType = value.GetType(); var asGenericList = asType.FindGenericInterface(typeof(IList <>)); if (asGenericList != null) { var asList = MagicMarker.GetListFactory(value.GetType()).Invoke(value); return(asList.Count > index); } return(false); }
public static Object GetIndexedValue(Object value, int index) { if (value == null) { return(null); } var asArray = value as Array; if (asArray != null) { if (asArray.Length <= index) { return(null); } return(asArray.GetValue(index)); } var asString = value as string; if (asString != null) { if (asString.Length <= index) { return(null); } return(asString[index]); } var asType = value.GetType(); var asGenericList = asType.FindGenericInterface(typeof(IList <>)); if (asGenericList != null) { var asList = MagicMarker.GetListFactory(value.GetType()).Invoke(value); if (asList.Count <= index) { return(null); } return(asList[index]); } return(null); }
public static IList <object> AsObjectList(this object value) { if (value == null) { return(null); } else if (value is IList <object> asList) { return(asList); } else if (value.GetType().IsGenericList()) { return(MagicMarker .GetListFactory(value.GetType()) .Invoke(value)); } throw new ArgumentException("invalid value for object list"); }