2

ObjectCollection アイテムを IList(Of SomeType) に追加するにはどうすればよいですか? 私は試してみました:

For Each obj As SomeType In listBox.Items 'ObjectCollection
    MyObject.ItProperty.Add(obj) 'IList
Next

失敗。ありがとうございました。

4

2 に答える 2

1

可能であれば、非ジェネリックIListインターフェイスが最も簡単なアプローチになります。

IList list = (IList)MyObject.ItProperty;
list.Add(obj);

それ以外の場合は、次のことを行う必要があります。

  • 適切なものを見つけるT(反射を使用)
  • (リフレクションを使用して)Addからメソッドを解決しますIList<T>
  • メソッドを呼び出すAdd(リフレクションを使用)

特にジェネリック医薬品についてのその反省は良くありません。

別の方法として、4.0を使用している場合は、を使用してみることができますがdynamic、これにはパブリックAPIのみが表示されることに注意してください。ただし、試してみる価値はあります(IList失敗した場合のみ):

dynamic list = MyObject.ItProperty;
list.Add(obj); // let's hope Add isn't an explicit interface implementation
于 2010-11-12T12:54:44.947 に答える
0

何がどこで失敗したかについて詳細を追加できますか? コードが機能するはずです。

"Unable to cast object of type 'XXX' to type 'SomeType'."" " 行で例外が発生した場合For Each objは、listBox.Items コレクションに「SomeType」タイプではない項目が少なくとも 1 つあります。

于 2011-02-08T19:48:38.740 に答える