У меня есть прецедент, когда мне нужно проверить, является ли значение С# 7 ValueTuple, и если да, проведите через каждый из элементов. Я пробовал проверять с помощью obj is ValueTuple
и obj is (object, object)
, но оба они возвращают false. Я обнаружил, что могу использовать obj.GetType().Name
и проверить, начинается ли это с "ValueTuple"
, но это кажется мне хромым. Любые альтернативы будут приветствоваться.
У меня также есть проблема с получением каждого элемента. Я попытался получить Item1
с найденным здесь решением: Как проверить, существует ли свойство в динамическом анонимном типе в С#?, но ((dynamic)obj).GetType().GetProperty("Item1")
возвращает значение null. Надеюсь, что я смогу сделать while
, чтобы получить каждый элемент. Но это не работает. Как я могу получить каждый элемент?
Обновление - больше кода
if (item is ValueTuple) //this does not work, but I can do a GetType and check the name
{
object tupleValue;
int nth = 1;
while ((tupleValue = ((dynamic)item).GetType().GetProperty($"Item{nth}")) != null && //this does not work
nth <= 8)
{
nth++;
//Do stuff
}
}