Я пытаюсь написать несколько методов для работы с многослойным объектом IEnumerable в C#. В следующем примере показан метод с именем «ConsoleWrite», который используется для вывода каждой строки в объекте IEnumerable на консоль.
public void ConsoleWrite(IEnumerable<string> StringData)
{
foreach (var EachString in StringData)
{
Console.Write(EachString);
}
}
Использование метода «ConsoleWrite».
List<string> Test1 = new List<string>();
Test1.Add("123");
Test1.Add("456");
ConsoleWrite(Test1);
Он работает ну и вывод "123456". Однако, когда дело доходит до случая List<List<string>>
, этот метод ConsoleWrite должен быть перегружен, как показано ниже.
public void ConsoleWrite(IEnumerable<IEnumerable<string>> StringData)
{
foreach (var EachString in StringData)
{
ConsoleWrite(EachString);
}
}
Тест для случая List<List<string>>
.
List<List<string>> Test2 = new List<List<string>>();
Test2.Add(Test1);
Test2.Add(Test1);
ConsoleWrite(Test2)
Более того в случае List<List<List<string>>>
этот метод ConsoleWrite должен быть перегружен как public void ConsoleWrite(IEnumerable<IEnumerable<IEnumerable<string>>> StringData)
. Мне интересно, есть ли способ справиться с произвольно вложенным списком IEnumerable<...<IEnumerable<string>>>
легко и без перегрузки по одному?
Любые предложения приветствуются.