Tôi đã thực hiện tái cấu trúc lớp và nghĩ đến việc di chuyển 100 dòng trong một phương thức riêng biệt. Như thế này:Đối tượng IDisposable là tham số ref cho phương thức
using iTextSharp.text;
using iTextSharp.text.pdf;
class Program
{
private static void Main(string[] args)
{
Document doc = new Document(iTextSharp.text.PageSize.LETTER, 10, 10, 42, 35);
using (var mem = new MemoryStream())
{
using (PdfWriter wri = PdfWriter.GetInstance(doc, mem))
{
doc.Open();
AddContent(ref doc, ref wri);
doc.Close();
File.WriteAllBytes(@"C:\testpdf.pdf", mem.ToArray());
}
}
}
public static void AddContent(ref Document doc, ref PdfWriter writer)
{
var header = new Paragraph("My Document") { Alignment = Element.ALIGN_CENTER };
var paragraph = new Paragraph("Testing the iText pdf.");
var phrase = new Phrase("This is a phrase but testing some formatting also. \nNew line here.");
var chunk = new Chunk("This is a chunk.");
doc.Add(header);
doc.Add(paragraph);
doc.Add(phrase);
doc.Add(chunk);
}
}
Tại phương pháp biên dịch kêu gọi ném ngoại lệ: biến cục bộ chỉ đọc không thể được sử dụng như một mục tiêu chuyển nhượng cho doc và mem.
Chỉnh sửa: tại đây chỉ tôi thêm nội dung trong tài liệu pdf
vào một phương pháp khác. vì vậy tôi cần phải vượt qua cùng một đối tượng doc, phải không? vậy tại sao tôi không thể sử dụng ref
hoặc ra param
.
Về mặt kỹ thuật using
bất chấp mục đích của ref
thông số tại đây.
Cố gắng tìm trên MSDN:
A ReadOnly property has been found in a context that assigns a value to it.
Only writable variables, properties, and array elements can have values assigned
to them during execution.
Làm thế nào các đối tượng trở nên đọc chỉ kêu gọi của phương pháp? Trong phạm vi đối tượng là còn sống và bạn có thể làm bất cứ điều gì bạn muốn.
Vui lòng hiển thị chương trình ngắn nhưng * hoàn chỉnh để minh họa sự cố. –
Không, đó không phải là một chương trình ngắn nhưng đầy đủ. "Ngắn nhưng hoàn thành chương trình" Tôi có nghĩa là "cái gì tôi có thể sao chép và dán vào một tập tin văn bản mới, biên dịch và chạy không có thay đổi". –
Thử sao chép và dán vào một tệp văn bản mới và biên dịch nó. Lớp 'Document' là gì? Lớp 'PdfWriter' là gì? 'Đoạn'? 'Chunk'? 'Cụm từ'? Tôi mạnh mẽ nghi ngờ họ không liên quan đến câu hỏi, và rằng bạn chỉ cần * một số * 'IDisposable' thực hiện - vì vậy sử dụng một trong BCL, và thêm một chỉ thị' using' thích hợp. –