【发布时间】:2014-12-15 10:14:29
【问题描述】:
我有一个扩展方法,可以将一组项目分成更小的子集:
static class MyClass {
/// <summary>
/// Breaks a list of items into chunks of a specific size
/// </summary>
public static IEnumerable<IEnumerable<T>> chunk<T>(this IEnumerable<T> source, int chunksize)
{
while (source.Any())
{
yield return source.Take(chunksize);
source = source.Skip(chunksize);
}
}
}
现在我可以通过
调用这个方法-
MyClass.chunk(myEnumerable, 500),或使用 myEnumerable.chunk(200)
对吗?但是当我使用静态(第一个)调用时,我的一个客户抱怨 MissingMethodException:
System.MissingMethodException:找不到方法:System.Collections.Generic.List´1<System.Collections.Generic.List´1<!!0>> MyClass.chunk(System.Collections.Generic.IEnumerable´1<!!0>, Int32).)。
我无法复制它,也许在你的帮助下我可以......
【问题讨论】:
-
我认为这是dll问题而不是逻辑问题,请确保用户在正确的位置部署了最新的dll
-
两种调用方式没有区别,前者只是后者的语法糖。如果您的客户遇到缺少方法的异常,则表明他的代码正在针对没有该方法的旧版本 DLL 执行,但正在针对具有该方法的新版本进行编译。
-
@stakx 我不想要奇迹,我只是想知道我之前如何重现这个问题,所以我可以提供一些进一步的信息。不过你的回答已经给了我一些提示。
标签: c# .net extension-methods missingmethodexception