创建从IEnumerable派生的接口

时间:2009-12-20 12:01:47

标签: c# interface ienumerable

我有几个类,它们全部来自IQueryResult。我需要在foreach循环中迭代这些类中的每一个。不幸的是,foreach循环无法看到GetEnumerator方法。我已经设法在使用.NET 4.0中提供的动态关键字的foreach中使用它,但是IQueryResult不需要从IEnumerable派生。

public interface IQueryResult : IEnumerable<IQueryResult>
{
}

你会如何以更优雅的方式做到这一点?

亲切的问候 PK

2 个答案:

答案 0 :(得分:1)

IQueryResult 真的 IEnumerable<IQueryResult>吗?例如,我可能期望(对于单个网格):

public interface IQueryResult<T> : IEnumerable<T> { /* */ }

或者如果您尝试表示多个网格:

public interface IQueryResult<T> : IEnumerable<IEnumerable<T>> { /* */ }

虽然我可能想把它更明确地作为一种方法:

public interface IQueryResult<T> {
    IEnumerable<IEnumerable<T>> GetGrids(); // or something
}

请注意,IEnumerable[<T>] foreach {{1}},但它可以让生活更加可预测,并且可以使用LINQ等。

答案 1 :(得分:-1)

一个。不要继承ineterfaces。

湾你可以在该类上使用针对IEnumarable的刺激演员,它会起作用