2010-06-25 2 views
2

누구든지 내게 다음 코드의 GetInterfaces()가 FullName = null 인 인터페이스 유형을 반환하는 이유를 설명 할 수 있습니까?GetInterfaces()는 FullName = null 인 일반 인터페이스 유형을 반환합니다.

public class Program 
{ 
    static void Main(string[] args) 
    { 
     Type[] interfaces = typeof (Data<>).GetInterfaces(); 
     foreach (Type @interface in interfaces) 
     { 
      Console.WriteLine("Name='{0}' FullName='{1}'", @interface.Name, @interface.FullName ?? "null"); 
     } 
    } 
} 

public class Data<T> : IData<T> 
{ 
    public T Content { get; set; } 
} 

public interface IData<T> 
{ 
    T Content { get; set; } 
} 

이 프로그램의 출력은 다음과 같습니다 예상의

Name=IData`1' FullName='null' 

I 종류 :

Name=IData`1' 
FullName='ConsoleApplication2.IData`1' 

은 가르치 려하시기 바랍니다 :)

답변

7

http://blogs.msdn.com/b/haibo_luo/archive/2006/02/17/534480.aspx

업데이트는 : 마이크로 소프트 문서는 개선 : 현재 인스턴스가 기반으로 제네릭 형식 매개 변수, 배열 형, 포인터 타입, 또는하는 ByRef 유형을 나타내는 경우

https://msdn.microsoft.com/en-us/library/system.type.fullname.aspx

Type.FullName가 null 유형 매개 변수 또는 일반 유형 정의가 아니지만 미해결 유형 매개 변수를 포함하는 일반 유형 일 수 있습니다. 여기

이 문서에서 내려 삶은 Type.FullNamenull있는 상황의 예입니다 외부 사이트

[Fact] 
    public void FullNameOfUnresolvedGenericArgumentIsNull() 
    { 
     Type openGenericType = typeof(Nullable<>); 
     Type typeOfUnresolvedGenericArgument = openGenericType.GetGenericArguments()[0]; 

     Assert.Null(typeOfUnresolvedGenericArgument.FullName); 
    } 
+1

스트레이트 링크가 답을 제공 할 수 있지만, 고유의 위험에서 링크를 제공하는이 그래서. 링크가 유효하지 않게되고, 404가 수정되면 어떻게됩니까? 질문에 대한 답변은 사라집니다. 대답에 대한 설명을 제공하면 도움이되는 답변을 뒷받침하는 링크가 도움이 될 것입니다. 이것은 일반적인 SO 지침을 따릅니다. – Hooligancat

+1

@Hooligancat 설명서 플러스 및 예제에서 작은 따옴표를 추가했습니다. –

관련 문제