我有几个类,它们全部来自IQueryResult。我需要在foreach循环中迭代这些类中的每一个。不幸的是,foreach循环无法看到GetEnumerator方法。我已经设法在使用.NET 4.0中提供的动态关键字的foreach中使用它,但是IQueryResult不需要从IEnumerable派生。
public interface IQueryResult : IEnumerable<IQueryResult>
{
}
你会如何以更优雅的方式做到这一点?
亲切的问候 PK
答案 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的刺激演员,它会起作用