2010-03-15 9 views
1

J'ai un object obj qui est passé dans une méthode d'aide.Comment obtenir des informations de type sans utiliser de génériques?

public static MyTagGenerateTag<T>(this HtmlHelper htmlHelper, T obj /*, ... */) 
{ 
    Type t = typeof(T); 

    foreach (PropertyInfo prop in t.GetProperties()) 
    { 
     object propValue = prop.GetValue(obj, null); 
     string stringValue = propValue.ToString(); 
     dictionary.Add(prop.Name, stringValue); 
    } 

    // implement GenerateTag 
} 

On m'a dit que ce n'est pas une utilisation correcte des génériques. Quelqu'un peut-il me dire si je peux obtenir le même résultat sans spécifier de type générique? Si c'est le cas, comment?

je ne serais probablement changer la signature de sorte qu'il serait comme:

public static MyTag GenerateTag(this HtmlHelper htmlHelper, object obj /*, ... */) 
{ 
    Type t = typeof(obj); 
    // implement GenerateTag 
} 

mais Type t = typeof(obj); est impossible.

Des suggestions?

Merci

Dave

+1

Pourquoi ce raisonnement n'était-il pas correct? –

Répondre

10

Type t = obj.GetType();

Bien que je ne pense pas qu'il y ait un problème avec ce que vous avez à l'heure actuelle.

1

Qu'en est-il juste faire:

Type t = obj.GetType(); 

Cela devrait vous donner le TypeInfo.