Zephyr (./21) :
GoldenCrystal (./20) :
Une propriété autogénérée c'est une propriété où les accesseurs get/set sont générés automatiquement 
Donc en gros tu dis ".Length est la propriété liée à l'attribut .length" et il te crée automatiquement les get/set par défaut (ceux qui renvoient/modifient directement l'attribut sans pré/post traitement) ?
Plus exactement tu lui dis juste je veux une propriété "Length" avec un get et un set (oui sans un set elle te sert a rien

) et il crée en interne un champ associé (auquel tu ne peux pas accéder) + get/set par défaut qui font rien (ce qui ne t'empêche en rien d'en faire plus tard une vraie propriété si le besoin s'en ressent)
Si c'est ça c'est vraiment inutile, créer des propriétés n'a plus aucun sens et autant tout mettre en public directement ^^
Bah non ça encapsule quand même ton champ, et je te rappelle que tu peux avoir des modificateurs d'accès différents sur le get et le set, et que ta propriété n'a aucune obligation d'être publique, donc c'est pas si limité que ça (utilisé de cette façon, c'est surtout un truc pour flemmards, mais ça a l'avantage de te masquer le champ utilisé en interne, ce qui peut être utile si jamais tu ne veux pas y avoir accès)
Sinon je peux te montrer l'approche DynamicMethod qui crée dynamiquement le get/set mais qui est un peu plus lourde à l'initialisation (et aussi rapide pour le reste du temps), mais quoi qu'il en soit ça sera toujours mieux que de la réflexion pure. (Enfin le code qu'a posté yAro peut être un peu optimisé quand même, notamment avec des TypedReference ^^)
Oh bah si t'as ça sous la main envoie, je sais pas si je l'utiliserai mais par curiosité ça m'intéresse quand même ^^
Heu, donc voilà la solution la plus polyvalente:
Fichier joint : FieldModifier.zipC'est tout bidon mais à l'heure actuelle je pense qu'on ne peut pas faire plus efficace (Il faut garder à l'esprit que tout ça fonctionne sans aucun bidouillage de mémoire et que tout est parfaitement géré par le Garbage Collector)