विधि के लिए रेफ परम के रूप में IDISposable ऑब्जेक्ट्स मैं कक्षा के एक रिफैक्टरिंग कर रहा था और एक अलग विधि में 100 लाइनों को स्थानांतरित करने के विचार कर रहा था। इस तरह:विधि
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);
}
}
संकलक की विधि बुला पर अपवाद फेंकता है: केवल पढ़ने के लिए स्थानीय चर एक काम लक्ष्य डॉक और सदस्य के लिए के रूप में इस्तेमाल नहीं किया जा सकता।
संपादित करें: यहां केवल मैं pdf
दस्तावेज़ में किसी अन्य विधि में सामग्री जोड़ रहा हूं। तो मुझे एक ही डॉक्टर ऑब्जेक्ट को पास करने की ज़रूरत है, है ना? तो मैं ref
या param
का उपयोग क्यों नहीं कर सकता।
तकनीकी रूप से using
ref
परम के उद्देश्य को निलंबित करता है।
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.
वस्तुओं को कैसे पढ़ हो? दायरे के भीतर वस्तु जीवित है और आप जो भी चाहें कर सकते हैं।
कृपया समस्या का प्रदर्शन करने वाला एक छोटा लेकिन * पूरा * कार्यक्रम दिखाएं। –
नहीं, यह एक छोटा लेकिन पूरा कार्यक्रम नहीं है। "लघु लेकिन पूर्ण कार्यक्रम" से मेरा मतलब है "कुछ मैं प्रतिलिपि बना सकता हूं और एक नई पाठ फ़ाइल में पेस्ट कर सकता हूं, संकलित और बिना किसी बदलाव के चला सकता हूं"। –
इसे एक नई टेक्स्ट फ़ाइल में कॉपी करने और चिपकाने का प्रयास करें और इसे संकलित करें। 'दस्तावेज़' वर्ग क्या है? 'पीडीएफवाइटर' वर्ग क्या है? 'Paragraph'? 'Chunk'? 'Phrase'? मुझे दृढ़ता से संदेह है कि वे इस प्रश्न के लिए अप्रासंगिक हैं, और आपको केवल * कुछ * 'आईडीस्पोजेबल 'कार्यान्वयन की आवश्यकता है - इसलिए बीसीएल के भीतर एक का उपयोग करें, और उपयुक्त' उपयोग 'निर्देश जोड़ें। –