-1

さて、これを説明するために、私がやっていることを要約しようと思います

ある時点で、クラス「サプライヤー」にアイテムのリストを作成します。この例では、パーツのリストが、マスタークラスに存在するサプライヤーのリストに追加されます。

ある時点で、ジョブ (ジョブ クラス) に追加する特定のパーツを選択したいと思います。このパーツは既に作成されています。単純にパーツを取り出してジョブに追加したいと思います。

その部分はこれを使用して追加されました: 「これより前に、サプライヤーが選択されました」

Class Supplier
public void AddParts( int PartNum, string PartName, string PartDescription, decimal      Cost, decimal CostWithVAT, decimal Price, short Quantity)
{          
    m_partUsed.Add(new Part(PartNum, PartName, PartDescription, Cost, Price, Quantity));         
}

これを実装する方法は次のとおりです。

   private void btnAddJobPart_Click(object sender, EventArgs e)
    {
        //Select the job that the part is to be added too
        string selectedJob = cboJobPartRef.Text;
        List<Job> foundJob = Program.AuspexDo.SelectJob(selectedJob);

        //For the job found
        foreach (Job j in foundJob)
        {
            //Select the supplier
            string selectedSupplier = cboJobSupplier.Text;
            List<Supplier> foundSup = Program.AuspexDo.SelectSupplier(selectedSupplier);

            //For the supplier found, find the part to be added
            foreach (Supplier s in foundSup)
            {
                string selectedPart = cboJobParts.Text;
                List<Part> foundPart = s.SelectPart(selectedPart);

                //Get those part details

                //Add those details to the job

                j.AddParts //the part item here from the supplier list;


            }                   
        }
    }

どんな助けでも大歓迎です。ありがとう。

4

5 に答える 5

3

List.AddRangeを探していると思います

m_partUsed.AddRange(foundPart)
于 2012-10-30T15:58:58.747 に答える
1

メソッドを次のように変更してみませんか(一度に1つのパーツしか追加されないため、AddPartsメソッドを呼び出します)。AddPart

public void AddPart(Part part)
{          
    m_partUsed.Add(part);         
}

その後、パーツを追加できます

j.AddPart(somePart);

またはオブジェクト初期化子を使用する

j.AddPart(new Part{Num=PartNum, Name=PartName, Description=PartDescription,
                   Cost=Cost, Price=Price, Quantity=Quantity});

またはコンストラクターを使用する

j.AddPart(new Part(PartNum, PartName, PartDescription,
                   Cost, Price, Quantity));

元の実装を維持したい場合は、2つのAddPartメソッドを並べて使用できます。これはメソッドのオーバーロードと呼ばれます。次に、パーツオブジェクトまたは個々のパーツ値を追加することを選択できます。

public void AddPart(Part part) { ... }
public void AddPart(int PartNum, string PartName,
                    string PartDescription, decimal Cost,
                    decimal CostWithVAT, decimal Price, short Quantity) { ... }

パラメータリストが異なる限り、同じ名前のメソッドをいくつでも持つことができます。パラメータの数が異なるか、パラメータの種類が異なる必要があります。パラメータ名は考慮されません。

于 2012-10-30T16:05:27.143 に答える
1

このメソッドAddPartsは新しいパーツを作成します。このメソッドを変更して、Partパラメーターを取得し、それをリストに追加します。

public void AddParts(Part p)
{          
    m_partUsed.Add(p);         
}
于 2012-10-30T15:58:52.070 に答える
1

次のようなこともできます。

j.AddParts(foundSup.SelectMany(s => s.SelectPart(selectedPart)))

AddParts は Alexei の回答のように見えますが。

于 2012-10-30T16:06:41.650 に答える