इंटरफेस/जेनेरिक के बारे में कुछ मौलिक होना चाहिए जो मैंने अभी तक नहीं सीखा है। मुझे अब यह सीखने की उम्मीद है।इंटरफेस की सूची एक कार्यान्वयन प्रकार का उपयोग क्यों नहीं कर सकती?
मैं इस इंटरफेस और वर्ग है:
यहाँ परिदृश्य है
public interface IInterface
{
string TestValue { get; set; }
}
public class RealValue: IInterface
{
public string TestValue { get; set; }
}
अगर मैं इस तरह की एक विधि बनाने तब भी वह अच्छे संकलित:
public class RandomTest: IMethodInterface
{
public IInterface GetRealValue()
{
RealValue realValue = new RealValue();
return realValue;
}
}
ध्यान दें कि मैं कर रहा हूँ इंटरफ़ेस लागू करने वाली ऑब्जेक्ट को वापस करना।
अब, अगर मैं RandomTest
वर्ग के लिए एक विधि है कि सूची लौटाती जोड़ने तो इसे अब और काम नहीं करता:
public List<IInterface> GetRealValues()
{
List<RealValue> realValues = new List<RealValue>();
return realValues; // ERROR Here <- says it can't convert to a List<IInterface>
}
तो, मेरा अनुमान है कि जेनरिक इस को समझ नहीं सकता है, लेकिन क्यों?
क्या इसके आसपास कोई रास्ता है?
public interface IMethodInterface
{
IInterface GetRealValue();
List<IInterface> GetRealValues(); // Can't just convert the return types to a concrete
// class because I am implementing this. This
// interface is in a separate project that does not
// have the concrete classes.
}
वहाँ किसी भी आशा है: आप जब विधि की वापसी मूल्य से ऊपर बंद कर दिया जाता है क्योंकि आप इस तरह एक अंतरफलक को लागू कर रहे हैं क्या करते हैं? तुम क्या करोगे?
यह अच्छा लग रहा है। मुझे एक सामान्य प्रकार के पैरा के लिए 'आउट' का अर्थ समझने के लिए और अधिक खोदना होगा। किसी भी तरह से, मैंने कोशिश की और यह काम किया। – Vaccano
'आउट' कीवर्ड से संबंधित थोड़ी अधिक जानकारी के साथ उत्तर का विस्तार किया। –
मीठा! विस्तारित उत्तर के लिए धन्यवाद! – Vaccano