나는 얼마 동안 나를 괴롭 히고있는 인터페이스 상속 문제를 가지고있다. 어떤 의미가없는 것처럼 보이고, 나는 근본적으로 뭔가 빠져 있다는 결론을 내릴 수 있습니다.인터페이스 상속 : 메서드가 표시되지 않습니다!
개요
아래의 코드는 우리의 ORM 도구 유창 인터페이스의 일부에서이다. 데이터베이스에서 데이터를 가져 오기위한 SQL 유사 구문을 제공합니다. 문제를 이해하기 위해 모든 상호 관계를 완전히 깰 필요는 없습니다. 실제 문제는 EndClause 메소드입니다.
EndClause 문제
한 예상 지점에 표시되지 않습니다 EndClause라는 방법있다 - IOrderQueryRoot. 내가 아는 한, 은 모두에 EndClause라는 메서드가 있지만, IOrderQueryRoot를 구현하는 개체를 사용할 때 EndClause가 intellisense로 팝업되지 않는 두 개의 다른 인터페이스에서 상속 받기 때문에 표시됩니다.
아래에 구현 정보가 더 있습니다.
처음으로 IOrderQueryRoot (EndClause 포함)를 보면 IHasOrderLogicalOperators와 IHasOrderFields (EndClause도 포함)를 상속 받았다는 것을 알 수 있습니다.
Public Interface IHasOrderLogicalOperators
Function [And]() As IHasOrderFields
Function [AndNot]() As IHasOrderFields
Function [Not]() As IHasOrderFields
Function [Or]() As IHasOrderFields
Function [OrNot]() As IHasOrderFields
Function EndClause() As IHasOrderLogicalOperators
End Interface
Public Interface IHasOrderFields
Function OrderID(ByVal value As Int32) as IHasOrderLogicalOperators
Function OrderID() As IHasOrderComparisonOperators
Function PracticeID(ByVal value As Int32) as IHasOrderLogicalOperators
Function PracticeID() As IHasOrderComparisonOperators
'note: I cut about a page of additional order-related fields you don't need to see.
Function BeginClause() As IHasOrderFields
Function EndClause() As IHasOrderLogicalOperators
End Interface
Public Interface IOrderQueryRoot
Inherits IHasOrderFields, IHasOrderLogicalOperators
End Interface
나는 문제가 EndClause 방법은 상속 체인의 다른 장소에서 두 번 IOrderQueryRoot에 와서는 사실과 함께 할 수있는 뭔가가 생각합니다. 그것은 입니까 그런 식으로 일할 필요가 있습니다. - 내가 제거한다면이 시점에서
Public Function EndClause() As IHasOrderLogicalOperators Implements IHasOrderFields.EndClause, IHasOrderLogicalOperators.EndClause
Me.Query.EndClause()
Return New OrderQueryElement(Query)
End Function
, 인터페이스가 잘 작동 : 여기 내가 사용하고 코드입니다, 실제로 인터페이스를 소비하는 장소를 표시 할 수 있기 때문에
이 메서드는, VS 두 EndClause 메서드를 구현해야하는 비명 것입니다. "최종 개발자"가 실제로 인터페이스에 대해 코드를 작성하려고 할 때 한 단계 아래로 문제가 발생합니다.
내가 너에게 뭔가 뛰어 내리는 지 알려 줘라 .-이게 나를 오랫동안 미치게 만들었다.
단 하나의 생각 - 나는 모호성 문제가 있다는 것을 알았지 만 이것이 문제라면 VS가 내게 소리 지르지 않아야합니까? –
나는 VS가 꽤 좋지만 절대적으로 모든 이상한 시나리오를 잡아 내지 못한다는 대답을 추측하겠습니까? –
@brian : 컴파일합니까? –