J'ai demandé un Question semblable avant mais cette fois c'est un peu prolongé. Ce que j'avais déjà demandé était de surcharger SomeProperty
dans la classe dérivée pour laquelle la réponse utilisait l'opérateur 'new'.Substituer la propriété dans la classe dérivée
Mais maintenant, je suis à nouveau dans le même scénario mais,
cette fois, je dois exécuter un comportement par défaut dans la classe de base tout en fixant la
SomeProperty
dans la classe dérivée.
je dois forcer l'utilisateur qui dérivez de ma classe de base pour exécuter un ensemble de code dans la classe de base tout en fixant la SomeProperty
dans la classe dérivée. J'ai déjà essayé avec le modèle de modèle mais j'ai besoin de lier cela à un contrôle personnalisé dans ma bibliothèque de contrôle de Windows Phone. Donc, ma classe de base ne peut pas être une classe abstract
. Je ne peux donc pas spécifier une fonctionnalité commune dans la classe de base et m'assurer que la fonctionnalité est appliquée pendant que la variable est définie dans la classe dérivée.
Existe-t-il un autre moyen que je pourrais appliquer ce code (ou sorte de règle) s'exécute dans la classe de base tout en définissant la propriété dans la classe dérivée?
Modifier: Je dois également mentionner que la personne qui dérive de la classe de base ne devrait pas appeler le comportement spécifique dans la classe de base. J'ai besoin de forcer l'invocation.
+---------------+
| UIElement |
|---------------| +----------------------+
| ... | | My Windows Application
| SomePropert{} | |----------------------|
| //Force to |<---+ |+--------------------+|
| //to xcute this code ||MyUserControl ||
+---------------+ | ||--------------------||
+--------------+-----+ || ||
|FrameWorkElement | |+--------------------+|
|--------------------| |//Want to use |
| ... |<-+ |// SomeProperty; |
+--------------------+ | | |
+-----------+-+ | |
|Control | | |
|-------------| +----------------------+
| ... |<---+
+-------------+ |
+-----------+---+
| UserControl |
|---------------|<---+
| ... | |
+---------------+ |
+----------+-------+
| MyUserControl |
|------------------|
| SomeProperty{} |
| //Want to override
| //Setting this here|
|//should make sure|
|//base class code |
|//gets executed |
+------------------+
Vous pouvez utiliser 'new' sur une méthode identique à celle d'une propriété. Vous pouvez également utiliser un peu de réflexion pour atteindre l'intérieur de la classe de base et piquer les membres. Utiliser la réflexion et la mise en cache des délégués serait ma recommandation. – IAbstract