C# 为什么BindingList在添加成员时抛出System.ArgumentException

C# 为什么BindingList在添加成员时抛出System.ArgumentException,c#,exception,bindinglist,C#,Exception,Bindinglist,我有一个绑定列表,在某些难以复制的条件下,当一个值被添加到它时,它会抛出以下异常: System.ArgumentException:复杂数据绑定接受IList或IListSource作为数据源。 位于System.ComponentModel.ReflectPropertyDescriptor.SetValue(对象组件,对象值) 位于System.Windows.Forms.Binding.SetPropValue(对象值) 位于System.Windows.Forms.Binding.Pu

我有一个绑定列表,在某些难以复制的条件下,当一个值被添加到它时,它会抛出以下异常:

System.ArgumentException:复杂数据绑定接受IList或IListSource作为数据源。 位于System.ComponentModel.ReflectPropertyDescriptor.SetValue(对象组件,对象值)
位于System.Windows.Forms.Binding.SetPropValue(对象值)
位于System.Windows.Forms.Binding.PushData(布尔力)
位于System.Windows.Forms.BindingManagerBase.PushData(布尔值&成功)
位于System.Windows.Forms.BindingManagerBase.PushData()
位于System.Windows.Forms.CurrencyManager.CurrencyManager\u PushData()
位于System.Windows.Forms.CurrencyManager.OnItemChanged(ItemChangedEventArgs e)
在System.Windows.Forms.CurrencyManager.List\u ListChanged(对象发送者,ListChangedEventArgs e)
在System.ComponentModel.ListChangedEventHandler.Invoke(对象发送方,ListChangedEventArgs e)
在System.ComponentModel.BindingList
1.OnListChanged(ListChangedEventArgs e)
在System.ComponentModel.BindingList中
1.InsertItem(Int32索引,T项)
在System.Collections.ObjectModel.Collection`1.Add(T项)

我可以理解它是在创建列表时发生的,还是在更改其中一个属性时发生的,但这只是在向列表中添加某些值时发生的。声明如下:

private BindingList<IBusinessObject> _bindingList = new BindingList<IBusinessObject>();
更糟糕的是,这发生在以前工作的生产代码中,这里涉及的代码最近都没有被编辑过。我怀疑这是某种微妙的数据交互问题,这也是它很少发生的原因,但坦率地说,我不知道异常的起源点在.Net内部深处

更新:
它实际上不是单个表单,而是用于支持多个表单/对话框的对象模型的一部分。这是非常复杂的代码,不是我写的代码,只是在维护/增强。在深入研究代码之后,BindingList似乎被添加到更多的域对象中,并最终用于使用对象的string属性填充ImageListBox。讨论中的字符串不应为null或空白,但由于代码位于何处,并且很难复制附加调试程序以验证的错误,因此会出现问题。空值是否会导致BindingList在距离问题实际所在位置如此遥远的位置引发异常?在最终被指定为相关ImageListBox列表的数据源之前,该对象被直接插入到3个或4个其他对象/集合中(即使如此,它也取决于其他两个选择,以确定最终使用哪个BindingList对象填充列表).

看起来您将某种列表控件的DataSource属性绑定到了IBusinessObject的属性,并且该属性返回的值作为DataSource无效。能否更具体地说明此表单上使用的所有绑定?

看起来您将某种列表控件的DataSource属性绑定到了IBusinessObject的属性,而该属性返回的值作为数据源无效。能否更具体地说明您在此表单上使用的所有绑定

_bindingList.Add(myBusinessObject);