List.AddRange имеет несколько неверных аргументов - PullRequest
0 голосов
/ 11 апреля 2011

Я хочу создать список цветов (например), которые соответствуют предопределенному интерфейсу 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

1 Ответ

1 голос
/ 12 апреля 2011

Каждый токен Розы и Ромашки должен ссылаться на экземпляр класса, реализующий

IEnumerable<IFlower>

Так что я предполагаю, что один или оба из них ссылаются на что-то другое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...