我有两个带有以下签名的方法:
void Method<T>(T data)
{
}
void Method<T>(IEnumerable<T> data)
{
}
在同一个方法中,它既可以接收单个对象,也可以接收对象列表。如果我尝试将List<'T>传递给它,它会解析为第一个方法,但显然我想要的是第二个方法。我必须使用list.AsEnumerable()才能使其解析为第二个方法。是否有任何方法可以使其无论列表是T[]、IList<'T>、List<'T>、Collection<'T>、IEnumerable<'T>等类型都解析为第二个方法。
IEnumerable
中的所有项?如果是这样,请放弃第二种方法,而在调用站点处使用foreach
循环。 - ThomasMethod<U> (U data)
会与Method<T>(T data)
冲突。 - Jaroslav Jandek