संक्षिप्त उत्तर नहीं है।
लंबा उत्तर: संग्रह प्रारंभकर्ताओं का समर्थन करने के लिए कक्षा के लिए, इसे IENumerable को लागू करने की आवश्यकता है और इसे एक अतिरिक्त विधि की आवश्यकता है। उदाहरण के लिए:
public class MyClass<T,U> : IEnumerable<T>
{
public void Add(T t, U u)
{
}
public IEnumerator<T> GetEnumerator()
{
throw new NotImplementedException();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
मैं तो ऐसा कर सकते हैं:
var mc = new MyClass<int, string> {{1, ""}, {2, ""}};
तो इस का उपयोग करते हुए, चलो यह एक विशेषता के लिए काम करने के लिए कोशिश करते हैं।
public class CollectionInitAttribute : Attribute, IEnumerable<string>
{
public void Add(string s1, string s2)
{
}
public IEnumerator<string> GetEnumerator()
{
throw new NotImplementedException();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
और अब यह परीक्षण करने के लिए: (पक्ष टिप्पणी के बाद से गुण जेनरिक का समर्थन नहीं करते, मैं सिर्फ यह परीक्षण के लिए तार का उपयोग कर हार्डकोड कर रहा हूँ)
[CollectionInit{{"1","1"}}]
public class MyClass
{
}
और उस संकलन नहीं है :(मुझे यकीन नहीं है कि सीमा वास्तव में कहां है, मैं अनुमान लगा रहा हूं कि एक नियमित वस्तु है और इसलिए यह समर्थित नहीं है। इसलिए यह उत्सुक होगा अगर यह सैद्धांतिक रूप से समर्थित हो भाषा का भविष्य का संस्करण ....
स्कॉट, मुझे खेद है - मेरा जवाब असफल रहा है। मैं वोट अर्जित नहीं करता हूं। कृपया अपने निष्पक्ष खेल को वोट दें। – vladimir77
@ vladimir77 - आपको अपना जवाब नहीं हटाया जाना चाहिए था! कभी-कभी गलत उत्तर अभी भी सहायक होता है ... अगली बार अपने उत्तर को अपडेट करें, ताकि लोग समझ सकें कि यह गलत क्यों है। –
ठीक है। :) Ive इसे बहाल करें। – vladimir77