Possible en double:
Finding the Variable Name passed to a Function in C#Comment faire pour convertir le nom de variable en chaîne dans C# .net?
public new Dictionary<string, string> Attributes { get; set; }
public string StringAttributes = string.Empty;
public int? MaxLength { get; set; }
public int? Size { get; set; }
public int? Width { get; set; }
public int? Height { get; set; }
protected override void OnInit(EventArgs e) {
Attributes = new Dictionary<string, string>();
Attributes.Add("MaxLength", MaxLength.ToString());
Attributes.Add("Size", Size.ToString());
Attributes.Add("Width", Width.ToString());
Attributes.Add("Height", Height.ToString());
base.OnInit(e);
}
protected override void OnPreRender(EventArgs e) {
if (Attributes != null) {
StringBuilder attributes = new StringBuilder();
foreach (var item in Attributes) {
if (!string.IsNullOrWhiteSpace(item.Value)) {
attributes.Append(item.Key + "=\"" + item.Value + "\" ");
}
}
StringAttributes = attributes.ToString();
}
}
Le problème est ici, au lieu d'utiliser Attributes.Add("MaxLength", MaxLength.ToString());
et répétez le même processus pour d'autres propriétés, pourrait-on pas seulement une fonction qui est également en mesure d'ajouter des valeurs au dictionnaire, où les clés à ajouter sont leurs noms de variables? Say,
public void addAttribute(object variable){
Attributes = new Dictionary<string, string>();
Attributes.Add(variable.Name, variable.Value);
}...
Je suppose que cela est également possible de faire avec la réflexion, obtenir toutes les propriétés et nullables en boucle à travers eux puis en ajoutant chacun au dictionnaire ... Mais aussi longtemps que il y a d'autres façons, nous ne nous en tiendrions pas à la réflexion.
Mais si la réflexion est le seul choix, puis un autre problème serait maintenant comment obtenir les propriétés nullables de la classe ...
Toute aide serait grandement apprécié. Je vous remercie.
Jetez un oeil à http://stackoverflow.com/questions/72121/finding-the-variable-name-passed-to-a-function-in-c – adrianbanks
Je ne savais pas que nous pourrions utiliser des expressions pour cela ... ' chaîne publique GetPropertyName (Expression> variable) { return (variable.Body comme MemberExpression) .Member.Name; } ' –
Jronny
Oui, cette question a été posée ici plus d'une fois. Voici un autre lien: http://stackoverflow.com/questions/1669016/how-do-you-get-a-c-property-name-as-a-string-with-reflection –