Тип нельзя использовать в качестве параметра типа 'T' в универсальном типе или методе. Почему? [Дубликат]

На этот вопрос уже есть ответ здесь:

Почему ограничение общего типа приводит к неявной ошибке преобразования ссылок? 5 ответов

Я пытаюсь наследовать две разные модели от интерфейса. Эти Модели должны быть переданы в качестве Списка или Коллекции в Метод. Теперь я получаю это сообщение об ошибке:

The type 'InheritanceTest.FooModel' cannot be used as type parameter 'T' in the generic type or method 'InheritanceTest.Service.DoSomethingWith<T>(System.Collections.Generic.IEnumerable<T>)'. There is no implicit reference conversion from 'InheritanceTest.FooModel' to 'InheritanceTest.IModel<InheritanceTest.IModelItem>'. C:\Work\InheritanceTest\InheritanceTest\Program.cs 14 13 InheritanceTest

Может кто-нибудь объяснить, пожалуйста, что я делаю не так? : D

Демо-код:

interface IModel<T> where T : IModelItem
{
    string Name { get; set; }

    IEnumerable<T> Items { get; set; }
}

interface IModelItem
{
    string Name { get; set; }
}

class FooModel : IModel<FooModelItem>
{
    public FooModel()
    {
        Items = new List<FooModelItem>();
    }

    public string Name { get; set; }
    public IEnumerable<FooModelItem> Items { get; set; }
}

class FooModelItem : IModelItem
{
    public string Name { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        var fooLists = new List<FooModel>();
        var barLists = new ObservableCollection<BarModel>();

        var service = new Service();

        service.DoSomethingWith(fooLists);
        service.DoSomethingWith(barLists);
    }
}

class Service
{
    public void DoSomethingWith<T>(IEnumerable<T> list) where T : IModel<IModelItem>
    {
        foreach (var model in list)
        {
            Debug.WriteLine(model.Name);

            foreach (var item in model.Items)
            {
                Debug.WriteLine(item.Name);
            }
        }
    }
}

Демо-проект можно найти на GitHub:https://github.com/SunboX/InheritanceTest/blob/master/InheritanceTest/Program.cs

Ответы на вопрос(1)

Ваш ответ на вопрос