我試圖用如下反射填寫PDF表單:使用反射來填寫PDF形式 - iTextSharp的
// Get the form fields for this PDF and fill them in!
var formFieldMap = GetFormFieldNames(pdfTemplate);
foreach (var fields in formFieldMap)
{
var fieldName = UppercaseFirst(fields.Key.Replace("pdf_", ""));
var proPertyValue = fosques.GetType().GetProperty(fieldName).GetValue(ques, null);
formFieldMap[fields.Key] = proPertyValue.ToString();
}
這工作得很好針對第一屬性,但在第二次迭代它說Collection was modified; enumeration operation may not execute.
我應該創建另一個字段集合,還是可以避免這種情況?
無論何時迭代某個集合,都不應該在該過程中更改該集合的結構(並且將新值分配給此類映射中的現有關鍵字正在改變結構)。因此,無論是首先創建一個有問題的集合的淺表副本,或收集您想要在另一個集合中所做的更改,並在完成原始集合的foreach循環後應用它們。 – mkl
@mkl謝謝你的意思是淺拷貝? – Zaki
集合的淺表副本創建一個新集合,其中包含與原始對象相同的對象。相反,深層複製會創建一個包含原始對象所包含對象(深層)副本的新集合。 – mkl