私がそうしたいコードリストはリスト<T>として送信されます。どのようにプロパティを取得するには?
public class Ticket
{
public string strArticleID { get; set; }
public string strArticleDescription { get; set; }
public decimal decArticlePrice { get; set; }
public decimal decArticleVAT { get; set; }
public decimal decArticuleNetPrice { get; set; }
public decimal decArticleDiscount { get; set; }
public decimal decArticleQuantity { get; set; }
}
public static List<Ticket> _lstCurrentTicket = new List<Ticket>();
のこの作品は、それが外部DLLであるので
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
Ticket ticket = new Ticket();
string strRefID = this.dataGridView1.Rows[i].Cells[0].Value.ToString();
string strDescription = this.dataGridView1.Rows[i].Cells[1].Value.ToString();
decimal decQuantity = (decimal)this.dataGridView1.Rows[i].Cells[2].Value;
decimal decUPrice = (decimal)this.dataGridView1.Rows[i].Cells[3].Value;
decimal decDiscount = Convert.ToDecimal(this.dataGridView1.Rows[i].Cells[4].Value.ToString().Substring(0, this.dataGridView1.Rows[i].Cells[4].Value.ToString().Length - 1));
decimal decVAT = Convert.ToDecimal(this.dataGridView1.Rows[i].Cells[5].Value.ToString().Substring(0, this.dataGridView1.Rows[i].Cells[5].Value.ToString().Length - 1));
decimal decGPrice = (decimal)this.dataGridView1.Rows[i].Cells[6].Value;
ticket.strArticleID = strRefID;
ticket.strArticleDescription = strDescription;
ticket.decArticlePrice = decUPrice;
ticket.decArticleVAT = decVAT;
ticket.decArticuleNetPrice = decGPrice;
ticket.decArticleDiscount = decDiscount;
ticket.decArticleQuantity = decQuantity;
_lstCurrentTicket.Add(ticket);
}
TicketPrinting tktPrint = new TicketPrinting();
//Ticket and copies
tktPrint.PrintTicketFromList(_lstCurrentTicket, 2);
を通じてチケットを印刷する_lstCurrentTicketのすべての行を取得するには、外部DLLに送る必要があり、私は、ターゲットDLLで作業する最も簡単な方法は、
public void PrintTicketFromList<T>(List<T> lstArticles, short intCopies)
{
foreach (var prop in lstArticles.GetType().GetProperties())
{
if (prop.Name == "Item")
{
//Copy external list to local class for printing
}
}...
だと思った。しかし、私はそこにこだわっています。どのように私はそれをコピーすることができますリストの各元のクラスから各プロパティと値を反復することができますか?私がブレークポイントを作ると、フィールドと値が正しく渡されていることがわかりますが、アクセス方法がわからないので、元のクラスとまったく同じローカルクラスを作成してリストをクローンするようなことができます。ローカルリスト(Ticket)と渡されたList(T)が同じタイプではないと言うでしょう)。私は任意の考えをターゲットに正確なクラスを作成し、
public void PrintTicketFromList(object lstArticles, short intCopies)
{
List<TargetDLLTicket> lst =((List<TargetDLLTicket>)lstArticles).ToList(); }
ような何かを行う場合
またはどのように私はそれをコピーするだろうか?
「外部DLL」とは何か、なぜあなたはその '一覧'渡すことはできませんか? –
この「外部DLL」が想定していることと、それが提供するインターフェイスの種類に関する情報を追加してください。 – Codor
私は、物事を印刷するためのDLLを作成し、参照としてプロジェクトに追加しました。私がちょうどすれば tktPrint.PrintTicketFromList(_lstCurrentTicket、2); リスト内の要素にアクセスできないため、エラーが発生します。 – Mario