J'ai une propriété dans une classe de base étiqueté avec des attributs, et je voudrais changer certains attributs dans chacune de mes classes dérivées. Quelle est la meilleure façon de procéder? D'après ce que je peux dire, je dois définir la propriété comme abstraite dans ma classe de base et remplacer la propriété dans chacune de mes classes de base, et redéfinir tous les attributs. Cela semble vraiment redondant, et je ne suis pas folle parce que je devrais répéter les attributs communs dans chaque classe dérivée.Modifier la valeur d'un attribut dans une classe dérivée?
Ceci est un exemple simplifié de ce que j'essaie de faire. Je souhaite modifier MyAttribute
dans les classes dérivées mais conserver tous les autres attributs de la propriété identiques et définis en un seul endroit (c'est-à-dire que je ne souhaite pas devoir redéfinir XmlElement
plusieurs fois). Est-ce seulement possible? Ou y a-t-il une meilleure façon de faire cela? Ou suis-je complètement abuser des attributs ici?
using System;
using System.Xml;
using System.Xml.Serialization;
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
public class MyAttribute : System.Attribute
{
public MyAttribute() {}
public string A { get; set; }
public string B { get; set; }
}
public abstract class BaseClass
{
public BaseClass() {}
[XmlElement("some_property")]
[MyAttribute(A = "Value1", B = "Value2")]
public string SomeProperty { get; set; }
}
public class FirstDerivedClass : BaseClass
{
//I want to change value B to something else
//in the MyAttribute attribute on property SomeProperty
}
public class SecondDerivedClass : BaseClass
{
//I want to change value B to yet another value
//in the MyAttribute attribute on property SomeProperty
}
"Ou est-ce que j'utilise complètement les attributs ici?" - c'est juste ce que l'on ressent. Pour quel genre de choses utilisez-vous vos attributs réels? – AakashM
Sur un petit projet j'ai expérimenté avec la réflexion et j'utilise les attributs pour générer des formulaires html avec des messages d'erreur et des trucs comme ça. Encore une fois, ce n'est probablement pas la meilleure utilisation des attributs mais bon j'ai appris quelque chose de nouveau. – wsanville