2013-05-17 2 views
5

인터페이스 정의는 내 인터페이스의 BaseType이 null 인 이유는 무엇입니까?

public interface IPayeePayrollRunInitialPayElementData : IPayeePayrollRunPayElementData 

하지만 내 코드에 내 인터페이스의 baseType 여기서은 null입니다. 나는 이것의 어떤 감각도 만들 수 없다!

Breakpoint and watches

+3

http://stackoverflow.com/questions/538541/how-to-get-interface-basetype-via-reflection –

+0

동일한 링크를 게시하려고합니다. ^^ –

+0

인터페이스 ** 구현 ** 및 기본 클래스 ** 상속 **은 다른 두 가지입니다. 'is'와 비슷한 타입 캐스트 연산은 상속과 구현을 검사 할 것이지만, 타입 시스템은 존재하는 진정한 복잡성을 반영합니다. –

답변

8

그렇기 때문에 defined일까요?

인터페이스는 0 개 이상의 기본 인터페이스를 상속받습니다. 따라서 유형 개체가 인터페이스를 나타내는 경우이 속성은 null을 반환합니다. 기본 인터페이스는 GetInterfaces 또는 FindInterfaces으로 결정할 수 있습니다.

+0

물론 인터페이스가 여러 다른 인터페이스에서 생겨나 기 때문에 완벽하게 이해할 수 있습니다. 감사 –

1

인터페이스 객체로부터 유도되지 않는다.

+2

기술적으로는 사실이지만이 질문에는 실제로 대답하지 않습니다. 이 질문은'BaseType'이'object'가 아닌 이유를 묻지 않습니다. 왜'BaseType'이 효과적으로 파생 된 인터페이스가 아닌지 묻습니다. – hvd

2

Type.BaseType 페이지;

인터페이스는 0 개 이상의 기본 인터페이스를 상속받습니다. 따라서이 속성은 Type 개체가 인터페이스을 나타내는 경우 null을 반환합니다. 기본 인터페이스는 GetInterfaces 또는 FindInterfaces으로 결정할 수 있습니다.

public interface IPayeePayrollRunInitialPayElementData : IPayeePayrollRunPayElementData 
{ } 

public interface IPayeePayrollRunPayElementData 
{ } 

class Program 
{ 
    static void Main(string[] args) 
    { 
     foreach (Type tinterface in typeof(IPayeePayrollRunInitialPayElementData).GetInterfaces()) 
     { 
      Console.WriteLine(tinterface.FullName); 
     } 
    } 
} 

출력 될 것입니다;

IPayeePayrollRunPayElementData 

여기는 DEMO입니다.

관련 문제