2009-03-09 15 views
1

私はC#.netで構造を持っています。私はその構造の目的を作りました。この構造体のオブジェクトをArrayListにキャストする必要があります。オブジェクト/構造体をarraylistにキャストする方法は?

OrderMessageStructure.OrderMessage orderToModify = new OrderMessageStructure.OrderMessage(); 

object neworderobject = (object)orderToModify; 
ArrayList arr = new ArrayList(); 
arr = (ArrayList)neworderobject; 

しかし、私はエラーを取得しています: 私が使用しています「『System.Collections.ArrayList』を入力するタイプ 『OrderMessage』のオブジェクトをキャストすることができません。」

オブジェクト/構造体をArrayListに変換する方法は?

+0

(構造体の各メンバーにリストを埋め込む)リフレクションを探しているのですか、オブジェクトをリストに追加してオブジェクトのArrayListを作成したいと思っていますか? – strager

答えて

2

あなたの質問には、確かな答えを得るための十分な情報がありません。

OrderMessageオブジェクトのArrayListを作成する場合は、Arraylist FIRSTを作成し、次にOrderMessageのインスタンスを追加する必要があります。

厳密に型指定されたOrderMessageのArrayListを使用する場合は、Generic NamespaceのListを使用し、OrderMessageのADDインスタンスをそれに追加します。

あなたのOrderMessageに配列構造がある場合、arraylistを返すメソッドをそれに追加する必要があります。 OrderMessageをArrayListに変換するコードを記述する必要があります。

4

C#でオブジェクトを別のオブジェクトにキャストすることはできません。その型安全な言語です。

あなたの構造体にArrayListAdd()を作成する必要があります。

さらに、List<StructType>()を作成し、その構造体を追加してください。

CLR Via C#。それを読んで。


OrderMessageStructure.OrderMessage orderToModify = 
    new OrderMessageStructure.OrderMessage(); 

ArrayList arr = new ArrayList(); 
arr.Add(orderToModify); 
+0

さらに、Genericsを使用してください。 =] – strager

+0

私はしました。エディターは私のために私の括弧を脱出していませんでした。ちょうどそれを編集しました。 – Will

1

彼らは完全に無関係な種類を持っているので、あなたは、これら2つのオブジェクトを変換することはできません。キャストが成功するためには、OrderMessageはArrayListから継承しなければなりません。 OrderMessageをArrayListに追加したい場合は、そうすることができます。

ArrayList arr = new ArrayList(); 
arr.Add(orderToModify); 
1

オブジェクトをキャストする必要はありません。単にあなたのArrayListに追加します:

ArrayList list = new ArrayList(); 
list.Add(myObject); 

が、より良いオプションは、一般的なリストを使用することです:

List<MyObject> list = new List<MyOjbect>(); 
list.Add(MyObject); 

ジェネリックリストの利点は、あなたが持っていないので、それが強く型付けされていることですあなたのリストからオブジェクトを引き抜くときにオブジェクトをあなたのタイプにキャストすること。

関連する問題