.net 将ObjectCollection中的项添加到IList(SomeType)

.net 将ObjectCollection中的项添加到IList(SomeType),.net,vb.net,collections,object,ilist,.net,Vb.net,Collections,Object,Ilist,如何将ObjectCollection项添加到IList(某种类型)? 我试过: For Each obj As SomeType In listBox.Items 'ObjectCollection MyObject.ItProperty.Add(obj) 'IList Next 没有成功。 谢谢。如果可能,非通用的IList接口将是最简单的方法: IList list = (IList)MyObject.ItProperty; list.Add(obj); 否则,您必须: 找到

如何将ObjectCollection项添加到IList(某种类型)? 我试过:

For Each obj As SomeType In listBox.Items 'ObjectCollection
    MyObject.ItProperty.Add(obj) 'IList
Next
没有成功。
谢谢。

如果可能,非通用的
IList
接口将是最简单的方法:

IList list = (IList)MyObject.ItProperty;
list.Add(obj);
否则,您必须:

  • 找到合适的
    T
    (使用反射)
  • IList
    解析
    Add
    方法(使用反射)
  • 调用
    Add
    方法(使用反射)
这种反思,特别是在泛型上,是不好的

另一种选择是,如果您有4.0,您可以尝试使用
dynamic
,但请注意,这只会看到公共API。值得一试(仅当IList失败时):


你能补充一些失败的细节吗?你的代码应该可以工作


如果您遇到异常
“无法将类型为“XXX”的对象强制转换为类型为“SomeType”。
在“
为每个obj
”行,则列表框中至少有一个项。项集合不是类型为“SomeType”的。

我认为您缺少一些文本。它以“我试过了:”结尾。我已经改变了。对不起,谢谢你。
dynamic list = MyObject.ItProperty;
list.Add(obj); // let's hope Add isn't an explicit interface implementation