2009-12-20 2 views
3

IQueryResult에서 파생되는 두 개의 클래스가 있습니다. foreach 루프에서 iterable이되도록 각 클래스를 필요로합니다. 불행히도 foreach 루프는 GetEnumerator 메서드를 볼 수 없습니다. .NET 4.0에서 사용할 수있는 동적 키워드를 사용하여 foreach에서 사용할 수 있었지만 IQueryResult는 IEnumerable에서 파생 될 필요가 없습니다.IEnumerable에서 파생되는 인터페이스 만들기

public interface IQueryResult : IEnumerable<IQueryResult> 
{ 
} 

더 세련된 방식으로 어떻게할까요?

답변

-1

종류 안부 PK. ineterit을 계승하지 말라.

b. 당신은 그 클래스에 IEnumarable에 excpilcit 캐스트를 사용할 수 있으며

+0

왜 a point입니까? 상속 인터페이스에있어 문제점은 무엇입니까? – Iain

+0

클래스에서 인터페이스를 구현하는 것이 좋습니다. 다른 인터페이스를 상속하는 인터페이스를 작성하면 문자가 혼동됩니다. 당신이 그들을 사용하려고 할 때 주위에 물건을 던져야하고, 그것은 짜증납니다. –

1

IQueryResult정말IEnumerable<IQueryResult>가 작동합니까?

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

또는 여러 그리드 표현하기 위해 시도하는 경우 : 내가 유혹 할 수 있지만

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

하는 등 좀 더 명시 적으로 만들기 위해 나는 (단일 그리드) 것으로, 예를 들어, 예상 당신이하지 필요IEnumerable[<T>]foreach에 대한 작업을 수행

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

참고하지만, 생명까지 m을 만드는 :하는 방법 광석을 예측할 수 있으며 LINQ 등을 사용할 수 있습니다.

관련 문제