Tôi đang cố gắng để tạo ra một mô hình cho giao diện của tôi IRepository
:Danh sách <T> để thực hiện IQueryable <T>
public interface IRepository<T> : ICollection<T>, IQueryable<T>
{
}
Với thực hiện điều này:
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;
}
}
}
Nhưng khi tôi sử dụng nó, tôi nhận được StackOverflow
ngoại lệ. Làm cách nào để triển khai giao diện này một cách chính xác để có thể sử dụng chỉ một kho lưu trữ List
?
Cách sử dụng rất đơn giản
[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);
}
Dưới đây là ảnh chụp màn hình của ngoại lệ:
"Nhưng khi tôi sử dụng nó" - hiển thị mã cho chúng tôi? Hiển thị cho chúng tôi theo dõi ngăn xếp? – cdhowie
Bạn đang cố gắng làm gì? Đoán tốt nhất của tôi là bạn đang hy vọng cho một số phép thuật. Hành vi này hoàn toàn được mong đợi. – leppie