2017-07-21 5 views
0

J'ai essayé d'obtenir des propriétés dans une classe qui implémente une interface. Ma conception est comme ci-dessous,C#: Get Propriétés d'une classe implémentée depuis une interface

interface ABC 
{ 
    string Name { get; set; } 
} 

public class BCD:ABC 
{ 
public string Name { get; set; } 
public string Age{ get; set; } 
public string Height{ get; set; } 
public string Weight{ get; set; } 
} 

maintenant RÉFLEXION J'ai essayé,

main() 
{ 
    ABC abcObj = new BCD(); 
    var typeOfObject = typeof(abcObj); 
    var objectProperties = typeOfObject.GetProperties(BindingFlags.Public|BindingFlags.Instance); 
} 

Ce que je suis arrivé dans ObjectProperties étaient les propriétés de la classe ABC. Cependant, j'ai aussi besoin des propriétés de la classe BCD.

Quelqu'un peut-il aider à ce sujet?

+0

Avez-vous essayé de le lancer en tant que classe BCD? –

Répondre

2

Au lieu d'utiliser typeof (comme cela s'applique aux noms de classe/interfaces) essayer

var typeOfObject = abcObj.GetType(); 

pour obtenir le type de l'instance.

Quand je lance

ABC abcObj = new BCD(); 
var objectProperties = abcObj.GetType() 
      .GetProperties(BindingFlags.Public | BindingFlags.Instance); 

for (int i = 0; i < objectProperties.Length; i++) 
{ 
    Console.WriteLine("{0} ({1})", objectProperties[i].Name, objectProperties[i].PropertyType); 
} 

-je obtenir ce qui suit dans la console:

Nom (System.String)

Âge (System.String)

Hauteur (System.String)

Weig ht (System.String)