मैं सीखने की कोशिश कर रहा हूं कि सी # के साथ सामान्य वर्ग कैसे बनाएं। क्या कोई इस बात को समझा सकता है कि जब मैं इस प्रोग्राम को चलाता हूं तो मुझे संकलन त्रुटि क्यों मिलती है।सी # जेनेरिक इंटरफेस
मैंने IZooAnimal इंटरफ़ेस बनाया है। सभी चिड़ियाघर जानवर इस इंटरफेस को लागू करेंगे।
public interface IZooAnimal
{
string Id { get; set; }
}
public class Lion : IZooAnimal
{
string Id { get; set; }
}
public class Zebra : IZooAnimal
{
public string Id { get; set; }
}
ZooCage एक ही प्रकार
public class ZooCage<T> where T : IZooAnimal
{
public IList<T> Animals { get; set; }
}
चिड़ियाघर वर्ग के पशुओं पिंजरों
public class Zoo
{
public IList<ZooCage<IZooAnimal>> ZooCages { get; set; }
}
कार्यक्रम कक्षाओं का उपयोग करता है का आयोजन करेगा
class Program
{
static void Main(string[] args)
{
var lion = new Lion();
var lionCage = new ZooCage<Lion>();
lionCage.Animals = new List<Lion>();
lionCage.Animals.Add(lion);
var zebra = new Zebra();
var zebraCage = new ZooCage<Zebra>();
zebraCage.Animals = new List<Zebra>();
zebraCage.Animals.Add(zebra);
var zoo = new Zoo();
zoo.ZooCages = new List<ZooCage<IZooAnimal>>();
zoo.ZooCages.Add(lionCage);
}
}
जब मैं संकलन मैं follo मिलता है विंग त्रुटि: त्रुटि 2 तर्क 1: 'ConsoleApplication2.ZooCage<ConsoleApplication2.Lion>
' से करने के लिए 'ConsoleApplication2.ZooCage<ConsoleApplication2.IZooAnimal>
' परिवर्तित नहीं कर सकते
क्या परिवर्तन के क्रम में मेरे कार्यक्रम चलाने बनाने के लिए क्या करना होगा?
कॉन्वर्स और contravariance के बारे में पढ़ें ... शायद [यहां] शुरू करें (http://stackoverflow.com/q/2033912/644812)? –