コレクションをモックアップして列挙しようとすると、理解できない奇妙な 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() at CMS.SettingsProvider.InfoDataSet`1.d__0.MoveNext() at ...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;
}
Values には単一の値が含まれており、ウォッチ ウィンドウを介して細かく列挙できます...
ここで私が間違っていることを誰かが説明できますか?