मैं एक ऐसी घटना को संभालने में कामयाब रहा हूं जो एक सूची और टी टी न्यूटिम को इंगित करने वाले ईवेंट तर्कों को पास करता है, और मेरा काम सूची में न्यूटिम जोड़ना है।टी के किसी आइटम को कैसे सूचीबद्ध करें <T> बिना टी जानने के कैसे?
मैं उन सभी प्रकार की जांच किए बिना ऐसा कैसे कर सकता हूं जो मुझे पता है टी हो सकता है?
वर्तमान कोड इस के एक जोड़े दर्जन लाइनों है:
private void DataGridCollectionViewSource_CommittingNewItem(object sender, DataGridCommittingNewItemEventArgs e)
{
Type t = e.CollectionView.SourceCollection.GetType();
if (t == typeof(List<Person>))
{
List<Person> source = e.CollectionView.SourceCollection as List<Person>;
source.Add(e.Item as Person);
}
else if (t == typeof(List<Place>))
{
List<Place> source = e.CollectionView.SourceCollection as List<Place>;
source.Add(e.Item as Place);
}
...
अगर यह कुछ इस तरह करना संभव थे मैं पसंद करेंगे:
((List<T>) e.CollectionView.SourceCollection).Add((T)e.Item);
कोई भी विचार?
'System.Collections.ICollection' के लिए एक परिभाषा शामिल नहीं है 'जोड़ें' - यही कारण है कि मैंने इसे शुरुआत में पोस्ट किया था, लेकिन मैंने IList की कोशिश नहीं की थी, वह एक काम करता है। धन्यवाद। – Alain
@ एलेन आह, काफी मेला - मुझे पता चला कि किस तरीके से इंटरफ़ेस (iirc यह गैर-जेनेरिक और जेनेरिक संस्करणों के बीच थोड़ा अलग है) –
एक सैनिटी चेक के रूप में, क्या कोई तरीका है कि मैं यह सत्यापित कर सकता हूं कि SourceCollection e.Item के समान प्रकार का है? – Alain