在EnumerablePointEnumerator<T>.GetCurrent(ref Point p)
( Microsoft.Research.DynamicDataDisplay.DataSources
) 我得到一个错误Unable to cast object of type '<XYPairsInRange>d__8' to type 'IXYPair'.
XYPairsInRange 不是类型,而是我的类的方法,返回类型为 IEnumerable
public IEnumerable<IXYPair> XYPairsInRange(double startX, double endX)
{
foreach (IXYPair pair in this.XYPairs)
{
if (pair.X >= startX && pair.X <= endX)
{
yield return pair;
}
}
}
public IEnumerable<IXYPair> XYPairs
{
get
{
int counter = 0;
foreach (double x in XValues)
{
yield return new XYPair() { X = x, Y = YValues[counter++] };
}
}
}
IXYPair 定义为
public interface IXYPair
{
double X { get; }
double Y { get; }
}
什么可能在运行时导致此错误?我已经尝试显式地转换 yield return 语句并返回一个列表(没有 yield)但没有成功
编辑: XValues 和 YValues 都是 List< double >
调用代码:
public IEnumerable Query()
{
yield return this.Data.XYPairsInRange(Double.NegativeInfinity, Double.PositiveInfinity);
}