Eh bien, vous empêchez la plupart des types d'optimisations. D'abord, le JITter peut ne pas savoir quelle implémentation va être appelée, (Et il ne peut pas, puisque vous utilisez peut-être un Mock, n'est-ce pas?) Donc, tous ces accesseurs de propriété, qui auraient été inline seront réels appelle maintenant. En ce qui concerne la mise en ligne, les propriétés simples n'ajouteront pas de surcharge réelle au moment de l'exécution. Les propriétés virtuelles ne seront pas intégrées, c'est ce qu'elles font. C'était le côté performance des choses, l'autre problème est que vous ne pouvez pas faire confiance aux propriétés pour fonctionner comme vous pensez qu'elles fonctionnent. Chaque propriété peut être remplacée. Même par vous-même, parce que «cette fois, cela avait vraiment du sens, n'est-ce pas? Vous vous retrouverez donc plus souvent que d'habitude à vérifier l'arborescence des appels pour vérifier quelles implémentations sont applicables au code sur lequel vous travaillez.
avez-vous envisagé de mettre en œuvre votre classe une interface qui définit toutes ces méthodes? De cette façon, votre Mock est basé sur l'interface et vous n'avez pas besoin de marquer explicitement toutes vos méthodes avec le mot-clé virtuel ... – mezoid
Cela aurait aussi des inconvénients à être virtuel. Cependant, cela rend la chose plus flexible, donc au bout du compte, c'est peut-être le meilleur choix après tout. –