को देखते हुए यह:क्या यह पता लगाने का एक सामान्य तरीका है कि संपत्ति का प्रकार एक संख्यात्मक प्रकार है या नहीं?
class InvoiceHeader {
public int InvoiceHeaderId { get; set; }
IList<InvoiceDetail> LineItems { get; set; }
}
मैं वर्तमान में अगर एक वर्ग एक संग्रह संपत्ति है पता लगाने के लिए इस कोड का उपयोग कर रहा हूँ:
void DetectCollection(object modelSource)
{
Type modelSourceType = modelSource.GetType();
foreach (PropertyInfo p in modelSourceType.GetProperties())
{
if (p.PropertyType.IsGenericType && p.PropertyType.GetGenericTypeDefinition() == typeof(IList<>))
{
System.Windows.Forms.MessageBox.Show(p.Name);
}
}
}
वहाँ एक सामान्य तरीके से करता है, तो पंक्ति आइटम का पता लगाने के है एक गणनीय प्रकार है ? कुछ अन्य संख्यात्मक प्रकार (उदा। आईसीओलेक्शन) का उपयोग करेंगे, न कि एक आईएलआईस्ट।
p.PropertyType.GetInterfaces() में एक एक्सटेंशन लाइब्रेरी बना रहा हूं। इसमें शामिल है (टाइपोफ (आईनेमरेबल)) और पी.प्रॉपर्टी टाइप! = टाइपोफ (स्ट्रिंग) या अन्यथा स्ट्रिंग प्रॉपर्टी कंडिशन को – Oleg
नोट पास करेगी कि सभी संख्याएं 'IENumerable' नहीं हैं, मुझे विश्वास है कि' GetEnumerator' फ़ंक्शन के साथ कुछ भी वास्तव में 'foreach' कथन –
में जा सकता है हालांकि यह थोड़ा स्पष्ट हो सकता है, यह इंगित करने योग्य है कि एक स्ट्रिंग भी एक गणितीय प्रकार है। अगर कोई यह जांचना चाहता है कि कोई संपत्ति _any_ प्रकार की सूची या संग्रह है, तो आईसीओलेक्शन का उपयोग करके अधिक उपयुक्त होगा। – XtraSimplicity