【发布时间】:2010-10-07 08:27:58
【问题描述】:
我正在使用 Jon Skeet 非常聪明的 SmartEnumerable。如果你还没有看过,我建议你去看看。
类已定义:
public class SmartEnumerable<T> : IEnumerable<SmartEnumerable<T>.Entry>
构造函数是:
public SmartEnumerable(IEnumerable<T> enumerable)
然后你通过说来使用它:
new SmartEnumerable<Cat>(myCats); // where myCats is IEnumerable<Cat>
现在我真的很想让编译器推断我有一组猫,并且能够说:
new SmartEnumerable(myCats);
但是这给了我一个编译器错误:
方法的类型参数 'MiscUtil.Collections.SmartEnumerable.SmartEnumerable(System.Collections.Generic.IEnumerable)' 不能从用法中推断出来。尝试 指定类型参数 明确的。
我不清楚这是为什么。有没有办法解决它。为什么它看不到我正在使用IEnumerable<Cat> 并从中推断。我可以更改任何内容以使其识别我正在使用的类型吗?
我真的很想用某种方法来构造 SmartEnumerable 而不必指定类型 - 因为我主要将它用于 ASP.NET MVC 中的 UI,而我并不总是将 includes 用于类型并依赖在var 上给我一个参考。我最终不得不包含类型才能使用 SmartEnumerable - 这降低了它的优雅性。
哦,我会直接给约翰发电子邮件,但无论如何他可能会在这里回复得更快:-)
<font color=white>skeet skeet skeet, jon, jon, jon, jon skeet, skeet jon, skeetster, skeetmeister</font>
【问题讨论】:
-
这个问题是为了获得“最常提及 The Skeetster 的帖子”这个可疑的荣誉吗?
-
巧妙地使用飞碟信号来引起他的注意。看看你后面。他会不发声地出现。
-
哦不!我的秘密隐藏的 skeet-signal 文本可见 ;-)
-
看起来即使乔恩在睡觉时也无法在 SO 上追踪自己
-
没关系 - 我依靠我的奴才为我提供完美的答案;)为此,谢谢 Bryan 和 Jared...