मेरे पास एक दिलचस्प मुद्दा है जहां कक्षा को कक्षा से विरासत में प्राप्त किया जाता है जो आईनेमरेबल लागू करता है, लेकिन मैं यह भी चाहता हूं कि कक्षा एक अलग प्रकार के लिए आईनेमरेबल को कार्यान्वित करे। सबकुछ IENumerable एक्सटेंशन विधियों को छोड़कर काम करता है, जिसका अर्थ है कि मैं बिना किसी पंक्ति के डिफ़ॉल्ट रूप से ऑब्जेक्ट्स के लिए कोई LINQ नहीं कर सकता। क्या किसी के पास लगातार कास्टिंग के अलावा कोई विचार है?मेरी कक्षा LINQ का ऑब्जेक्ट्स का उपयोग क्यों नहीं कर सकती जब मेरी कक्षा IENumerable <T> कई बार लागू करती है?
using System;
using System.Collections.Generic;
using System.Linq;
namespace LinqTesting
{
public class Trucks<T> : Vehicles, IEnumerable<Truck>
{
public Trucks()
{
// Does Compile
var a = ((IEnumerable<Truck>)this).FirstOrDefault();
// Doesn't Compile, Linq.FirstOrDefault not found
var b = this.FirstOrDefault();
}
public new IEnumerator<Truck> GetEnumerator() { throw new NotImplementedException(); }
}
public class Vehicles : IEnumerable<Vehicle>
{
public IEnumerator<Vehicle> GetEnumerator() { throw new NotImplementedException(); }
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { throw new NotImplementedException(); }
}
public class Vehicle { }
public class Truck : Vehicle { }
}
क्या आपका ट्रक ऑब्जेक्ट दो आईनेमरेबल प्रकारों को विरासत में नहीं मिला है? आप संकलक को यह अनुमान लगाने के लिए कैसे उम्मीद करते हैं कि आप किस अनन्य प्रकार का उपयोग करना चाहते हैं, अपने इच्छित व्यक्ति को अपस्टास्टिंग करने का प्रयास करें और फिर फर्स्टऑरडिफॉल्ट –