2010-06-25 7 views
2

Quelqu'un peut-il m'expliquer pourquoi GetInterfaces() dans le code ci-dessous retourne un type d'interface qui a FullName = null?GetInterfaces() retourne un type d'interface générique avec 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; } 
} 

La sortie du programme est:

Name=IData`1' FullName='null' 

Je genre de prévu:

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

S'il vous plaît éclairez-moi :)

Répondre

7

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

Mise à jour: documentation Microsoft est améliorée:

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

Type.FullName est nulle si l'instance actuelle représente un paramètre de type générique, un type de tableau, le type de pointeur, ou byref type basé sur un paramètre de type, ou un type générique qui n'est pas une définition de type générique mais contient des paramètres de type non résolus.

Voici un exemple d'une situation où Type.FullName est null, bouilli vers le bas de la documentation:

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

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

Les liens directs vers des sites externes pourraient fournir la réponse, mais il existe un risque inhérent à la fourniture d'un lien de ALORS. Que se passe-t-il si le lien devient invalide, 404, est édité, etc. La réponse à la question est perdue. Il serait très utile de fournir une explication dans la réponse avec un lien pour soutenir la réponse est utile. Ceci suit les directives générales de SO. – Hooligancat

+1

@Hooligancat J'ai ajouté une petite citation de la documentation plus et de l'exemple. –

Questions connexes