J'ai un service WCF qui expose une méthode qui renvoie un tableau d'objets qui contiennent une propriété Image (voir le code ci-dessous). Dans la même solution, j'ai un projet de bibliothèque de classes qui a une référence de service à mon projet WCF. Dans la bibliothèque de classes, lorsque je tente de mettre à jour la référence du service, ma classe proxy devient indisponible. Lorsque je supprime la propriété "Graphic" de ma classe, je n'ai aucune difficulté à mettre à jour la référence de service dans la bibliothèque de classes et mon code se compile et s'exécute correctement. Je replace la propriété "Graphic" et la classe proxy redevient indisponible. Et ce qui est encore plus étrange, c'est que la seule classe exposée par la référence de service est "Image".Dans WCF, comment puis-je renvoyer une classe qui contient une propriété System.Drawing.Image?
Qu'est-ce que je néglige ici?
[Serializable]
public class PhotoDTO
{
public Guid Id { get; set; }
public Image Graphic { get; set; }
}
[ServiceContract]
public interface IGeneralService
{
[OperationContract]
PhotoDTO[] GetPhotos(Guid subsectionId);
}
Nope. ça ne marche pas. J'ai joué avec ça, ainsi qu'avec un tripotage avec l'attribut [KnownType (typeof (System.Drawing.Image))] mais sans trop de chance. Certains messages indiquent que si ma propriété graphique était un octet [] cela fonctionnerait et je suppose que c'est vrai. Cependant, le code de chaque côté de l'appel de service veut fonctionner avec la propriété graphique en tant qu'image. Une option serait de fournir une autre propriété byte [] GraphicAsByte {get; ensemble; } ou quelque chose comme ça qui convertirait l'image en octet [], mais cela ressemble à une sorte de piratage. –
voir ma mise à jour, bon code pour déboguer les problèmes de sérialisation ... –