Я хочу иметь метод расширения для печати всех содержимого IEnumerable < X>Как передать общий параметр в общий интерфейс?
public static IEnumerable<T> log_elements<T>(this IEnumerable<T> collection, bool recursive = true)
{
Form1.log("[");
foreach (T i in collection)
if(recursive&&(i.GetType().GetGenericTypeDefinition()==typeof(IEnumerable<>)))
(IEnumerable<>)i.log_elements();//This doesn't work
else
Form1.log(i);
Form1.log("]");
return collection;
}
Если он содержит IEnumerable < Y>, метод должен быть вызван для него тоже.
Я не могу добавить log_elements<T>(this IEnumerable<IEnumerable<T>>,bool)
, потому что IEnumerable<T>
соответствует T
оригинального метода.
Я почти уверен, что должно быть решение для такой простой проблемы в C#.
Не похоже, что вам вообще нужна общая форма 'IEnumerable'. –