基本上我正在构建一个非常通用的 T4 模板,我需要它做的一件事就是说 print variable.ToString()
。但是,我希望它评估列表并通过它们进行 foreach,而是打印 ListItem.ToString()
我的 T4 模板不知道 variable
将提前什么类型,这就是为什么它如此通用。
但是我当前生成的代码如下所示:
if(variable!=null)
if(variable is IEnumerable) //error here
foreach(var item in variable)
Write(item.ToString());
我在“使用泛型类型 System.Generic.Collections.IEnumerable 需要一个类型参数”的标记行上收到编译器错误
我实际上并不关心它是什么类型,我只是想知道您是否可以通过变量进行 foreach。我应该改用什么代码?
最佳答案
但是,您已经接受了答案,因为通用 IEnumerable<T>
实现了非通用 IEnumerable
,您可以直接转换为该答案。
// Does write handle null? Might need some sanity aswell.
var enumerable = variable as System.Collections.IEnumerable;
if (enumerable != null)
foreach(var item in enumerable)
Write(item);
else
Write(item);
关于c# - 如何检查变量是否是某种类型的 IEnumerable,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4590366/