एक वर्ग PCLDebug
साथ मैं एक पोर्टेबल कक्षा लाइब्रेरी है:एक प्रतिनिधि बनाएं जब वहाँ एक सशर्त विशेषता
public static class PCLDebug {
public static Action<string> LogLine { get; set; }
}
मुझे क्या करना बाहरी परियोजना में चीजों की स्थापना की है एक बार चाहते हैं, तो फोन करने में सक्षम हो वीएस आउटपुट विंडो में सामान प्रिंट करने के लिए पीसीएल के भीतर LogLine
। यहाँ मेरी प्रयास है:
MyPCL.PCLDebug.LogLine = System.Diagnostics.Debug.WriteLine;
समस्या है कि यहाँ संकलक शिकायत करता है, क्योंकि System.Diagnostics.Debug.WriteLine डीबग की एक सशर्त विशेषता है:
'System.Diagnostics के साथ प्रतिनिधि नहीं बनाया जा सकता .Debug.WriteLine (स्ट्रिंग) 'क्योंकि यह एक सशर्त विशेषता
है मैं वास्तव में इसके साथ ठीक हूँ अगर LogLine
कॉल केवल डिबगिंग वातावरण में काम करता है। लेकिन मैं कंपाइलर को खुश कैसे रखूं?
यह मेरे लिए काम किया। धन्यवाद! – realPT
यह क्यों काम करता है लेकिन यह सीधे असाइन करने में काम नहीं करता है? – reggaeguitar
@reggaeguitar क्योंकि 'सशर्त एट्रिब्यूट' कंपाइलर को फ़ंक्शन पर कॉल छोड़ने का कारण बनता है, लेकिन प्रत्यक्ष असाइनमेंट कॉल नहीं है, यह वास्तव में प्रतिनिधि निर्माण है, इसलिए इसे छोड़ा नहीं जा सकता है। लैम्ब्डा काम करता है क्योंकि यह एक अज्ञात फ़ंक्शन बनाता है जो या तो कुछ भी नहीं करता है या सशर्त फ़ंक्शन को कॉल करता है। किसी भी मामले में प्रतिनिधि निश्चित रूप से असाइन किया जाता है। – Kyle