के साथ सुरक्षित एनम पैटर्न कार्यान्वयन टाइप करें सामान्य प्रकार पर टाइपएफ़ एनम पैटर्न कैसे कार्यान्वित किया जा सकता है? मान लेते हैं यह इन पंक्तियोंजेनेरिक
public class KnownSetting<T>
{
public readonly static KnownSetting<String> Name = new KnownSetting<String>("name", "Default Name", t => t);
public readonly static KnownSetting<int> Size = new KnownSetting<String>("size", "25", t => Converter.ToInt32);
public String Key { get; set; }
public T DefaultValue { get; set; }
public Func<String, T> Converter { get; set; }
private KnownSetting(String key, T defaultValue, Func<String, T> converter)
{
Key = key;
DefaultValue = defaultValue;
Converter = converter;
}
}
पैटर्न के कार्यान्वयन इस तरह से सही है के बाद से निर्माता निजी रहता है, लेकिन जब इस संरचना का उपयोग कर, यह गलत लग रहा है के साथ लागू हो जाता है दो:
public static class Program
{
public static void main()
{
var x = KnownSetting<?>.Name;
}
}
तो एक विकल्प होगा इसे दो में विभाजित करना, ज्ञात सेटिंग कंटेनर क्लास और सेटिंग कार्यान्वयन, लेकिन फिर कंटेनर का दायरा निजी नहीं हो सकता है ताकि कंटेनर के भीतर से तत्काल हो सके।
इस पैटर्न को कैसे कार्यान्वित किया जा सकता है ताकि इसका जेनेरिक पहलू अंत उपयोगकर्ता से छुपा रहता है, लेकिन दृढ़ता से टाइप किया जाता है? क्या कोई और उपयुक्त पैटर्न है, या इसे लागू करने का एक बेहतर तरीका है?
अद्यतन मैंने यह दिखाने के लिए एक दूसरा नमूना जोड़ा कि मैं चाहता हूं कि सेटिंग सामान्य हो।
आपका स्थिर क्षेत्र प्रत्येक 'T' के लिए एक अलग महत्व है। आप वह नहीं चाहते हैं। – SLaks
सबसे अच्छा मैं सोच सकता हूं कि कन्स्ट्रक्टर आंतरिक है और अपने "कंटेनर क्लास" विचार के साथ जाना है, तो आपको केवल उसी असेंबली के भीतर प्रोग्रामर के अनुशासन पर भरोसा करना होगा। –
@Slaks मुझे ऐसा क्यों नहीं चाहिए? – Spooles