0

コレクションオブジェクトがあります。その単一のオブジェクトを操作するには、このコレクションの各オブジェクトをキャッチする必要があります。

インターフェイスを使用して着信オブジェクトを特定しました。

TypeOf Src Is System.Collections.IList = TRUE 
TypeOf Src Is System.Collections.Generic.IEnumerable(Of Object) = TRUE

実際のオブジェクトは

System.Collections.ObjectModel.ObservableCollection(Of OwnSpecialClass)

この着信オブジェクトをキャストするとき

NewCollection = CType(MySourceCollection, System.Collections.ObjectModel.Collection(Of Object))

例外をスローします(ドイツ語):

Das Objekt des Typs "System.Collections.ObjectModel.ObservableCollection 1[OwnSpecialClass]" kann nicht in Typ "System.Collections.ObjectModel.Collection1[System.Object]" umgewandelt werden.

OwnSpecialClass が使用できず、単にオブジェクトとして認識されている場合に、このコレクションを任意の ObservableCollection にキャストする方法。

私のテスト:

例外のスクリーンショット

4

2 に答える 2

0

これがあなたが求めているものであるかどうかは完全にはわかりません。そうでない場合はお詫びしますが、より具体的な観察可能なコレクションから通常のコレクションに、またはその逆に変更する方法を次に示します。少し費用のかかる操作です。

Dim observableCollection As New System.Collections.ObjectModel.ObservableCollection(Of String)()
Dim collection As New System.Collections.ObjectModel.Collection(Of Object)(observableCollection.Cast(Of Object)().ToList())

'or in reverse...'

Dim collection As New System.Collections.ObjectModel.Collection(Of Object)()
Dim observableCollection As New System.Collections.ObjectModel.ObservableCollection(Of String)(collection.Cast(Of String)())
于 2013-03-14T18:08:08.007 に答える
0

次のコードを使用すると、作業が行われます

 If TypeOf Src Is System.Collections.IList Then

     Dim IListTmp As System.Collections.IList = CType(Src, System.Collections.IList)
     Dim IListTmpItems(IListTmp.Count - 1) As Object
     IListTmp.CopyTo(IListTmpItems, 0)

     For Each O As Object In IListTmpItems
          'Whatever you want to do with that object now.... ex: result = result & O.ToString() & "|"
     Next
 End If

ただし、各アイテムをキャストする必要があるため、コンバーターはそれほどパフォーマンスが高くありません。

于 2013-04-23T11:28:56.477 に答える