在尝试模拟要枚举的集合时,我遇到了一个奇怪的 NullReferenceException,我无法理解。我不认为这是由 Mock 引起的,但我不能 100% 确定。任何人都可以识别出我在做什么愚蠢的事情吗?
InfoDataSet<OrderItemInfo> orders = OrderItemInfoProvider.GetOrderItems(orderInfo.OrderID);
foreach (OrderItemInfo orderItem in orders)
{
// Exception thrown on the first attempt to get an OrderItem in the foreach
}
这行代码的堆栈跟踪如下:
System.NullReferenceException:对象引用未设置为
对象的实例。结果 StackTrace:在
CMS.SettingsProvider.ObjectDataSet 1.GetObjectEnumerator() 在 CMS.SettingsProvider.InfoDataSet`1.d__0.MoveNext() 在 ...1.GetEnumerator() at
CMS.SettingsProvider.ObjectDataSet
集合的内容只是一个 IEnumerable 的包装器。就我而言,这应该让您对正在发生的事情有所了解。GetEnumerator(隐式和非隐式)实现只需调用值。
private IEnumerable<T> values;
/// <summary>
/// Initializes a new instance of the <see cref="MockDataSet{T}"/> class.
/// </summary>
/// <param name="values">The values.</param>
public MockDataSet(IEnumerable<T> values)
{
if (values == null)
throw new ArgumentNullException("values");
this.values = values;
}
值中有一个值,我可以通过监视窗口很好地枚举...
谁能解释我在这里做错了什么?