2010-01-09 7 views
0

Disons que je crée une classe "Planet" qui peut être héritée. L'un des objectifs de l'héritage est de créer un modèle avec différentes valeurs de propriétés par défaut. Par exemple:Remplacement des valeurs de propriété par défaut dans .Net, WinForms

Public Sub New 
    MyBase.New 
    MyBase.ForeColor = Red 
    MyBase.Name = "Mars" 
    etc. 
End Sub 

Maintenant, pour arrêter les paramètres par défaut sérialisation dans la méthode InitializeComponent, il y a 2 façons:

  1. Si je l'ai mis à exécution les propriétés en utilisant l'attribut « DefaultValue », et les fait overridable, l'attribut peut être surchargé avec la nouvelle valeur. Le problème avec ceci est, il n'y a aucun moyen de faire juste les attributs remplaçables, par opposition à la propriété entière.

  2. Je pourrais implémenter toutes les propriétés avec les méthodes protégées Reset'PropertyName 'et ShouldSerialize'PropertyName'. Cependant, c'est un peu une douleur dans le cul.

Est-il généralement important de s'assurer que quelqu'un qui remplace votre classe de base a la possibilité de changer les valeurs par défaut d'une propriété?

Répondre

1

Je dirais que non. Il n'y a aucun moyen de deviner si le dériver envisagerait même de changer la valeur par défaut. Vous allez ajouter du code à votre classe qui pourrait ne jamais être utilisé. Étant donné que le dépositaire peut changer la valeur par défaut (même s'il s'agit d'un pita), vous devriez éviter d'ajouter du code inutile.

Le conseil pour cela est disponible à partir de l'implémentation WF. Cela fait rarement ça.

Questions connexes