У меня есть функция, которая принимает объект в качестве типа аргумента. Этот аргумент может быть любого произвольного типа, но мне нужно проверить, является ли это списком нескольких предопределенных типов.
Если это список, то мне нужно перебрать список и сделать что-то с каждым элементом индивидуально (приведение типов не требуется, также не важно, какой тип, мне просто нужно перебирать, желательно без нескольких копипастированных блоков для каждого типа:
using System.Collections;
public void myfunc(object value) {
var isList = value is IList;
if (isList) {
foreach (var v in value) { // this is what I want to do
handleArg(v); // this function handles object
}
/* this is what I don't want to do:
if (value is List) {
foreach (var s in values as List) { ... }
} else if (value is List) {
foreach(var i in values as List) { ... }
}
*/
} else {
// not a list, just pass this thing on
handleArg(value)
}
}