Je travaille actuellement sur une structure arborescente de nœuds où chaque nœud devrait pouvoir dire s'il est équivalent à un autre nœud. Chaque classe de noeud est une sous-classe de QueryNode. Pour vérifier l'équivalence, les nœuds comparer si elles sont de la même sous-classe et ont des valeurs membres égales (bien sûr, il y a plus de choses en jeu, mais c'est la partie qui me bugs):Existe-t-il une alternative à la vérification de type dans ce code C#?
class VersionNode : QueryNode
{
VersionModifier m_versionModifier;
internal VersionModifier VersionModifier
{ get { return this.m_versionModifier; } }
// ...
protected override bool AreMembersEquivalent(QueryNode other)
{
VersionNode otherNodeAsVersionNode = other as VersionNode;
if (otherNodeAsVersionNode == null)
return false;
else
return (this.m_versionModifier == otherNodeAsVersionNode.VersionModifier);
}
}
Je pense que ce ne peut pas être une solution optimale car elle implique le moulage. Y a-t-il une manière plus élégante de faire ceci?
Le code regardera plus « élégant » si vous faites votre taille onglet 2 places, et raccourcissez vos noms de variables locales. – leppie
BTW vous avez un accès direct à m_versionModifier de l'autre instance. Pas besoin d'aller via une propriété :) Le 'ceci' est également inutile. – leppie
Je préfère un code verbeux à un look élégant depuis la lecture du Common Lisp Ansi de Paul Graham. –