J'ai trouvé une solution de contournement, mais j'ai eu des difficultés en début de semaine à travailler avec FluorineFx où j'avais un objet généré par Linq-to-SQL que je voulais envoyer par câble à Flash. Cet objet contenait une propriété dont Flash n'avait pas besoin :
[Association(Name="User_UserEntry", Storage="_UserEntries",
ThisKey="UserID", OtherKey="UserID")]
public EntitySet<UserEntry> UserEntries { ... }
Mais Flex n'a pas pu gérer le regonflage de ce type, le lancer :
ArgumentError : Erreur #2173 : Impossible de lire un objet dans le flux. La classe flex.messaging.io.ArrayCollection n'implémente pas flash.utils.IExternalizable mais est aliasée vers une classe externalisable.
Je n'avais pas besoin d'envoyer la propriété par l'intermédiaire d'un câble, j'ai donc essayé les étapes suivantes Marc Gravell suggéré en numéro 456624 en lui ajoutant tout d'abord des attributs à l'aide de la fonction MetadataTypeAttribute dans System.ComponentModel.DataAnnotations (trouvé à partir de JasonW Le commentaire de l'auteur de l'article sur numéro 393687 :
[MetadataType(typeof(UserMetadata)]
public partial class User { }
internal class UserMetadata
{
[FluorineFx.Transient]
public EntitySet<UserEntry> UserEntries { get; set; }
}
Malheureusement, il semble que FluorineFx ne prenne pas encore en charge les attributs de métadonnées (ce qui n'est pas très surprenant, ils sont assez nouveaux).
Ce que j'ai fini par faire, c'est créer un DTO dédié, avec toutes les propriétés qui intéressent Flash et aucune des propriétés qui ne l'intéressent pas. Ce n'est pas la solution la plus élégante.
D'autres personnes ont-elles rencontré ce problème et avez-vous trouvé des moyens plus élégants de le résoudre ?