Saturday, 18 August 2012
Recupérer la valeur d'une propriété privée - Get the value of private property outside the containing assembly via reflection( French version )
Récupérer la valeur d'une propriété privée d'une classe à partir d'une autre classe est, par théorie, impossible. En effet, par définition, une propriété déclarée private n'est accessible qu'à l'intérieur de la classe.
Considérons l'exemple :
public class PersonDepuis une autre classe, il est impossible d'évoquer :
{
public Personne(string name, string surname)
{
Name = name;
Surname = surname;
}
public string Name { get; set; }
private string Surname { get; set; }
}
Person holder = new Person("Foo","Bar");
var holderName = holder.Name ; //right
var holderSurname = holder.Surname ; // error
Toutefois dans certains cas exceptionnels, nous voulons récupérer cette valeur. Etant donné que le source de l'assembly n'est pas disponible, voici une façon de récupérer la valeur :
var holderSurname = p.GetType().GetProperty("Surname", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue(p, null);
Conclusion : à partir de la réflexion, nous avons pu avoir la valeur d'une propriété privée d'une classe.
Subscribe to:
Posts (Atom)