Dans notre code C#, nous avons une classe appelée Project. Notre classe de base BusinessObject (dont tous les objets d'entreprise héritent) définit une propriété :
public Project Project { get; set; }
Ce n'est normalement pas un problème tant que l'on reste dans la base de code C#. Toutefois, ces classes d'objets d'entreprise sont exposées dans des services Web par l'intermédiaire de câbles. Certains langages de consommation (tels que Flex's actionscript) ne peuvent pas gérer le fait qu'une propriété porte le même nom que sa classe.
Ce conflit de noms se produit partout dans notre code. Parfois, il est facile de changer le nom de la propriété ou de la classe. Parfois, c'est vraiment difficile. Nous nous sommes creusé les méninges et n'avons pas réussi à trouver une bonne méthode standard pour gérer ce problème. Il est possible de renommer la classe Project en ProjectType ou ProjectInfo, mais c'est laid et cela casse tout le code existant de nos consommateurs. Nous pourrions laisser le nom du type inchangé et changer le nom de la propriété en ProjectInfo, mais cela pose le même problème.
Quelqu'un a-t-il des conseils ou des meilleures pratiques pour une telle situation ?
EDITAR:
En répondant à certaines des suggestions formulées :
- Les méthodes ne sont pas exposées sur le fil, donc on ne peut pas les utiliser.
- Je préférerais une convention de dénomination standard qui respecte également les normes de dénomination propres à Microsoft.
- L'exposition d'un contrat différent pour Flex peut être une option. Cependant, nous utilisons Weborb pour l'interopérabilité avec Flex. Weborb utilise la réflexion pour faire correspondre exactement les noms de propriété, plutôt que d'utiliser la sérialisation XML ou SOAP. Si quelqu'un en sait plus sur la sérialisation personnalisée avec Weborb, ce serait utile.
EDIT #2 :
Pour référence, nous avons fini par renommer la propriété en quelque chose comme :
public Project ProjectInfo { get; set; }