J'ai fait des recherches sur Google pour trouver un moyen d'appeler Control.DataBindings.Add
sans utiliser de chaîne littérale, mais en obtenant le nom de la propriété à partir de la propriété elle-même, ce qui, à mon avis, serait moins sujet à erreur, du moins dans mon cas particulier, puisque je laisse normalement Visual Studio se charger de renommer une propriété. Mon code ressemblerait donc à quelque chose comme DataBindings.Add(GetName(myInstance.myObject)...
au lieu de DataBindings.Add("myObject"...
. Alors j'ai trouvé ça :
static string GetName<T>(T item) where T : class
{
var properties = typeof(T).GetProperties();
if (properties.Length != 1) throw new Exception("Length must be 1");
return properties[0].Name;
}
Cela s'appellerait, en supposant que j'ai une propriété appelée One
de cette façon : string name = GetName(new { this.One });
ce qui me donnerait "One"
. Je n'ai aucune idée de la raison pour laquelle cela fonctionne et si c'est sûr de l'utiliser ou non. Je ne sais même pas ce que c'est new { this.One }
signifie. Et je ne sais pas dans quel cas il pourrait arriver que properties.Length
n'est pas égal à 1.
Au fait, je viens de tester pour renommer ma propriété One
a Two
et Visual Studio est devenu new { this.One }
en new { One = this.Two }
qui, lorsqu'il est utilisé avec l'option GetName
La fonction m'a donné "One"
ce qui rend tout cela inutile puisque le nom que je transmettrais à Control.DataBindings.Add
serait toujours "Un" après avoir renommé la propriété.