Я хочу создать список цветов (например), которые соответствуют предопределенному интерфейсу IFlower
, как показано ниже.
public interface IFlower
{
string colour { get; }
int petals { get; }
}
public class Rose : IFlower
{
public Rose()
{
string[] colours = new string[]{ "Pink", "Orange", "Red", "Crimson", "Cerise" };
Random random = new Random();
colour = colours[random.Next(0, 4)];
}
public string colour { get; set; }
public int petals
{
get { return 8; }
}
}
public class Daisy : IFlower{
public Daisy()
{
string[] colours = new string[]{ "White", "Yellow", "Purple" };
Random random = new Random();
colour = colours[random.Next(0, 2)];
}
public string colour { get; set; }
public int petals
{
get { return 18; }
}
}
public class Flowers
{
public List<Daisy> Daisies
{
get
{
List<Daisy> items = new List<Daisy>();
items.Add(new Daisy());
items.Add(new Daisy());
return items;
}
}
public List<Rose> Roses
{
get
{
List<Rose> items = new List<Rose>();
items.Add(new Rose());
items.Add(new Rose());
return items;
}
}
}
Проблема заключается в том, что при запуске следующего кода для создания сцепленногосписок:
public List<IFlower> Flowers
{
get
{
List<IFlower> output = new List<IFlower>();
output.AddRange(Daisies);
output.AddRange(Roses);
return output;
}
}
Я получаю сообщение об ошибке:
The best overloaded method match for 'System.Collections.Generic.List<IFlower>.AddRange(System.Collections.Generic.IEnumerable<IFlower>)' has some invalid arguments