Existe-t-il un moyen de surcharger la procédure Items.Add dans la classe héritée de DropDownList ?

StackOverflow https://stackoverflow.com/questions/3224783

Question

J'ai ma propre classe personnalisée qui hérite de DropDownList.Existe-t-il un moyen de remplacer la procédure Items.Add ?Comment?

Était-ce utile?

La solution

Y a-t-il une raison particulière pour laquelle vous souhaitez hériter de cette classe, car vous fournissez cette classe à une interface?Si la réponse est non alors, vous devez vraiment utiliser la composition sur l'héritage;alors votre problème n'existerait pas.

voir Préférez la composition sur l'héritage?

Autres conseils

Vous ne pouvez pas remplacer la fonctionnalité Ajouter par défaut -- ListItemCollection est scellé - mais vous pouvez écrire une méthode d'extension qui étend le ListItemCollection classe.Voici un exemple :

namespace Truthseeker.Extensions
{
    using System.Web.UI.WebControls;

    public static class ListItemCollectionExtensions
    {
        public static void Add(
            this ListItemCollection collection, 
            ListItem item, 
            string extraParameter)
        {
            if (extraParameter.Contains("Add"))
                collection.Add(item);
        }
    }
}

Vous pouvez alors écrire quelque chose comme :

DropDownList ddl = new DropDownList();
ddl.Items.Add(new ListItem("text", "value"), "Add");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top