Как вызвать метод Dispose() на списке?

Не получается никак запихнуть List в using.

namespace myNamespace
{
using System.Collections.Generic;
public class Program
{
    public static void Main(string[] args)
    {
        using (List<MyClass> list = new List<MyClass>())
        {
            list.Add(new MyClass(1, "first", "instance"));
        }

    }
}
public class MyClass
{
    public int Id { get; set; }
    public string field1 { get; set; }
    public string field2 { get; set; }

    public MyClass() { }
    public MyClass(int id, string field1, string field2)
    {
        Id = id;
        this.field1 = field1;
        this.field2 = field2;
    }
}

Вот весь код. На экземпляре списка же по логике должнен вызываться метод Dispose(), но он почему-то не вызывается. Пишет какую-то ошибку. Объясните пожалуйста в чём тут может быть проблема?

Естественно не получается. List - это класс-коллекция, который не реализовывает интерфейс IDisposable, при использовании конструкции using, на сколько нам всем известно, при выходе из блока using неявно вызывается метод Dispose() из одноимённого интерфейса на экземпляре класса, инициализируемого в параметре блока using. Само собой, если инициализируемый класс в блоке using не реализовывает данный интерфейс, то и метод вызвать , хоть явно, хоть неявно - будет невозможно.
Лучший способ диспоузнуть список - не делать этого. Предоставьте это всё сборщику мусора. Пусть он сам заберёт всё ненужное пр ипрохождении цикла сборки мусора.
С другой стороны если вам всё же пришлось очищать ваш список экстренным путём через Dispose() - реализуйте расширяемый метод для Dispose в интерфейса IEnumerable. Так как любая системная коллекция реализовывает данный интерфейс - ваш список также будет иметь возможность использовать его.

public static void DisposeSequence<T>(this IEnumerable<T> source)
{
    foreach (IDisposable disposableObject in source.OfType(System.IDisposable))
    {
        disposableObject.Dispose();
    };
}