Salut tout le monde,
voici mon besoin, pouvoir associer de nouvelles propriétés à un objet de façon dynamique. Ces nouvelles propriétés ayant une accessibilité limitée, par exemple limitée à une méthode qui introduit ces nouvelles propriétés.
Je donne un petit exemple, dans une application, j'ai une classe Champ qui possède un certain nombre de propriétés, mais il ne possède pas la propriété Index du type int car cet index ne signifie rien pour un champ.
Par contre, j'ai besoin dans une méthode qui utilise une utilise de champs d'associer un index pour chacun de ces champs.
Pour ce faire, j'ai actuellement 2 possibilités, mettre l'index dans un Tag, sauf que le Tag est du type object, il faut donc faire un cast à chaque fois que je l'utilise et il se peut qu'il possède une autre information qui sera perdue.
Autre soucis, le terme Tag n'est pas parlant pour reconnaitre le rôle de la propriété.
Autre possibilité, je peux faire une liste d'int dont chaque valeur est l'int associé au champ qui se trouve à la même position dans la liste des champs.
Problème : il faut être sûr que les listes sont toujours bien synchronisées, de plus je ne peux plus faire de :
foreach(Champ champ in liste) car je dois avoir sa position dans la liste, il faut donc faire : for(int i=0;i<liste.Count;i++)
Ca signifie que ça m'impose de travailler avec une liste et non plus une simple énumération de champs, ce qui peut être contraignant.
Ceci n'est qu'un exemple simplifiant le besoin car en réalité, j'ai besoin d'associer plus qu'un int à mon champ, je dois aussi pouvoir lui associer une List.
Au final, ce besoin ressemblerait en quelques sorte aux extensions de méthodes sauf que ce serait des extensions de propriétés et que ça n'existe pas.
M'avez-vous suivi dans mon besoin ? Quelle est la solution pour répondre au besoin d'après vous ?
Merci par avance pour vos conseils.
Partager