Existe-t-il un moyen de créer une classe dérivée de XElement
, mais aussi de contrôler les types d'objets qui peuvent y être ajoutés?Comment contrôlez-vous les types d'objets que vous pouvez ajouter à un XElement?
Par exemple, dire que j'ai cette ...
public class HtmlHead : XElement {}
Mais je ne peux pas passer outre la méthode Add()
parce qu'il est bas au niveau XContainer
. Et même si je devais créer une classe qui dérive de XContainer
je n'ai toujours pas accès pour surcharger les méthodes Add()
. Pourquoi voudriez-vous faire cela, demandez-vous?
Je veux m'assurer que si mon programme compile qu'il analyse également le HTML correctement. Comme, vous pouvez seulement ajouter certains éléments à une balise HTML <head>
, donc je veux m'assurer que seules les balises prises en charge peuvent être ajoutées.
Sûrement, vous n'ajouterez pas de balise <anchor>
à la balise <head>
— Y'a-t-il un sentiment?
Bien sûr, vous ne pouvez pas le vérifier au moment de la compilation - vous auriez besoin de créer une architecture personnalisée (ce qui est assez facile). –
J'ai déjà une solution en place comme ci-dessus, mais elle ne gère que la création de l'objet. Je pense que créer une méthode personnalisée pour ajouter que tout le monde devrait utiliser est la route que j'allais prendre sur celui-ci. J'espérais juste qu'il y avait un meilleur moyen. Attraper l'événement est aussi une solution que j'ai envisagée, mais il ne serait pas pris au moment de la compilation et c'est vraiment ce dont j'ai besoin ici. Hmm ... penser à plus de solutions ... – jedmao
Comme je l'ai dit, vous auriez besoin d'une architecture personnalisée. Comme si 'HtmlElement' était remplacé par' Add (Anchor a) ',' Add (Title t) ', ... ce qui limiterait les types disponibles et serait aussi un contrôle ** compile **. Je ne voudrais pas faire une chose pareille (du moins pas pour la plupart des balises html) - si les programmeurs ne connaissent pas le HTML, c'est très mauvais (éduquer les fire) et vous pouvez valider plus tard. C'est (IMHO) trop de travail pour peu de bénéfice. –