मैंने एक सिंगलटन कक्षा लागू की है और चेतावनी प्राप्त कर रही है कि एक विधि जिसे मैं लिख रहा हूं वह 'एक सील क्लास में घोषित एक नया संरक्षित सदस्य है।' यह निर्माण को प्रभावित नहीं कर रहा है, लेकिन अगर मैं बाद में समस्याओं का कारण बनता हूं तो मैं वास्तव में चेतावनी को अनदेखा नहीं करना चाहता हूं? मैं समझता हूं कि एक सीलबंद वर्ग एक वर्ग है जिसे विरासत में नहीं लिया जा सकता है - इसलिए इसकी विधियों को ओवरराइड नहीं किया जा सकता है, लेकिन मुझे अभी भी नहीं मिलता है कि निम्न कोड मुझे चेतावनी क्यों देगा (क्या यह सिंगलटन डिज़ाइन के उपयोग के कारण है?):'सीलबंद वर्ग में संरक्षित सदस्य' चेतावनी (एक सिंगलटन वर्ग)
namespace WPFSurfaceApp
{
public sealed class PresentationManager
{
PresentationManager()
{
}
protected void MethodName()
{
}
public static PresentationManager Instance
{
get
{
return Nested.instance;
}
}
class Nested
{
// Explicit static constructor to tell C# compiler
// not to mark type as beforefieldinit
static Nested()
{
}
internal static readonly PresentationManager instance = new PresentationManager();
}
}
संपादित करें: चेतावनी विधिनाम() विधि के संबंध में है। संपादित करें: सुरक्षित शून्य विधि विधि()
यदि आप 'नेस्टेड' कक्षा 'निजी' बनाते हैं तो क्या होता है? –
मैं वहां कुछ भी सुरक्षित नहीं देख रहा हूं ... –
कुछ भी नहीं हुआ, चेतावनियां अभी भी वहां हैं। मुझे लगता है कि यह ईमानदार होने के लिए है कि इसे सिंगलटन डिज़ाइन के साथ कुछ भी करने वाला नहीं है - यह सीलबंद क्लास बनाम एक्सेस मॉडिफायर्स के साथ और अधिक करना है, लेकिन मैंने सोचा कि मैं इसका जिक्र करूँगा और मामले में वैसे भी नेस्टेड क्लास कोड शामिल करूँगा। –