質問

[OK]を私は次のようなクラスを持っている...

public class Order
{
    private Guid id;
    [DataMember]
    public Guid ID
    {
        get { return id; }
        set { id = value; }
    }

    private List<Items> orderItems;
    [DataMember]
    public List<Items> OrderItems
    {
        get { return orderItems; }
        set { orderItems= value; }
    }

}

public class Items
{
    private string itemName;
    [DataMember]
    public string ItemName
    {
        get { return itemName; }
        set { itemName = value; }
    }

}
私は私のコードで参照する場合

私は、パラメータとして「注文」リストに取るメソッドを持っています。

ACME.Order newOrder = new ACME.Order();
ACME.Items newItems = new ACME.Items();

newOrder.ID = xxx
newItems.ItemName = xxx

SendOrderWithItemsFunction(newOrder)
私のような何かを行うことができるように

上記しかし、私は私の項目のための追加機能を持っていない正常に動作し、次の

newOrder.Items.Add(newItem);

newOrder.Items = newItems

それは暗黙的に[] newItemsにnewOrder.Itemsを変換することはできませんと言っているので、動作しません。

何をしないのですか?

役に立ちましたか?

解決

私は何かが足りないかもしれないと思うが、newOrder.OrderItems.Add(newItem)はあなたのポストを持っているWAHTによると、うまく動作するはずです。

ただ、他のいくつかのnitpick物事ます:

それは単一の項目のみである場合は、

「アイテム」クラスの複数形は、奇妙です。これはおそらく、それはリストプロパティに単一の項目を割り当てるには、「OK」に見えた理由です。

クラスのメンバーだけでなく、あなたはあなたのポストの外にそれをカットしているかもしれませんが、WCFによってシリアライズされているすべてのクラスは、「のDataContract」としてマークされている必要があります。

このようなオブジェクトを初期化するとき、私が思うには、を使用するように多くのcleaerます初期化子に入力します:

var NewOrder = new ACME.Order{
     ID = xxx,
     OrderItems = new List<ACME.Item>
     {
          new ACME.Item{
               ItemName = xxx
          }
     }
};

他のヒント

あなたが持っていることはあなたのOrder.OrderItemsプロパティに追加機能があります:

newOrder.OrderItems.Add(newItem);

あなたも、あなたのOrderItemsに項目のリスト全体を追加することができます:

var someList = new List<Items>();
//populate someList here
newOrder.OrderItems.AddRange(someList);

あなたが行うことができるはずます:

newOrder.OrderItems.Add(newItem);
あなたのnewItems []が配列の場合は、

、あなたがこれを行う必要があります:

newOrder.OrderItems.AddRange(newItem.ToList<Items>());

あなたはnewItems型としてACME.Itemsを宣言したが、あなたのOrderItemsクラスのOrderプロパティがList<Items>です。これらのタイプは、直接、他の1つから割り当て可能ではありません。だから、newOrder.OrderItems = newItemsの割り当てはsayList<Items> = Itemsしようとしているようなものです。それはあなたが上記で概説したクラスに基づくことはできません。代わりに、リストに追加する必要があります。

あなたは、リスト内のリストを持っており、add()メソッドが欠落している場合は、

、回避策は、新しいリストを作成する項目を追加し、その後、新しいリストに内側のリストを設定することです。代わりに:

outerList.innerList.Add(item)

..使用..

var newList = new List<ItemType>();
newList.Add(item);
outerList.innerList = newList;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top