我正在编写一个过滤器函数来返回从更大的超类型集合(例如对象)中指定的特定类型.这个想法是我给你一个可枚举的,你举例说明了所有的字符串.你可以这样写,没有泛型:
public static IEnumerable Filter(IEnumerable source, Type type) { List
如果我们想要返回泛型,有几种不同的方法可以解决它.
作为直接端口:
public static IEnumerableFilter (IEnumerable source, Type type)
传递'示例':
IEnumerableFilter (IEnumerable source, TResult resultType)
最终我认为最干净的是:
public static IEnumerableFilter (IEnumerable source)
第二种类型将完全使用参数调用(并推断类型):
Filter(myList, "exampleString");
作为最终版本,将使用类型说明符调用:
Filter(myList);
强类型返回泛型函数的适当方法是什么,其中返回类型不会自动隐含在签名中?(为什么?)
(编辑注意:我们的输入没有输入,例如IEnumerable
Linq中包含的以下扩展方法可以满足您的需求:
IEnumerableOfType (this IEnumerable enumerable);
这是一个用法示例:
Listobjects = //... foreach(string str in objects.OfType ()) { //... }
如您所见,他们使用泛型参数作为返回类型说明符.这比使用Type或字符串更简单,更安全,并返回非类型安全枚举.