List для реализации IQueryable

Я пытаюсь создать имитацию для моего интерфейса IRepository :

public interface IRepository<T> : ICollection<T>, IQueryable<T>
{
}

С помощью этой реализации:

public class RepositoryFake<T> : List<T>, IRepository<T>
{
    public Expression Expression
    {
        get
        {
            return this.AsQueryable().Expression;
        }
    }

    public Type ElementType
    {
        get
        {
            return this.AsQueryable().ElementType;
        }
    }

    public IQueryProvider Provider
    {
        get
        {
            return this.AsQueryable().Provider;
        }
    }
}

Но когда я использую его,Я получаю исключение StackOverflow . Как правильно реализовать этот интерфейс, чтобы иметь возможность использовать только List в качестве репозитория?

Использование очень простое

[Test]
public void Test()
{
    RepositoryFake<User> users = new RepositoryFake<User>();
    users.Add(new User());

    List<User> list = (from user in users 
                 where user.Id == "5"
                 select user).ToList();

    Assert.That(list, Is.Empty);
}

Вот скриншот исключения:

Exception

25
задан Sly 20 July 2011 в 16:47
поделиться