Serializzazioner classi astratte

mercoledì 24 agosto 2011 - 14.34
Tag Elenco Tags  C#  |  .NET 3.5  |  Windows 7  |  Windows Vista  |  Windows XP  |  Visual Studio 2008  |  SQL Server 2008

biroph Profilo | Junior Member

Ciao a tutti, ho una situazione simile a quella che trovate di seguito, ad eccezione del fatto che la classe Vehicle eredita da un altra classe base (CommonBase) vuota e dalla quale ereditano tutti gli oggetti presenti nel DataLayer. Il mio servizio web (asmx), da tutti i metodi, ritorna un oggetto List<CommonBase>. Non riesco a serializzare il tutto, mi diceva che non è possibile serializzare la classe Bike (piu tosto che la la classe Car), poi ho seguito le istruzioni dalla guida MSDN (da dove ho copiato questo esempio) e ora mi ritorna un errore strano "il servizio non è conforme a WS-I Basic Profile v1.1.".
Ovviamente se elimino l'attributo [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] tutto funziona benissimo, ma non credo sia una giusta soluzione.

Vi prego di aiutarmi e vi ringrazio moltissimo.

Cristian

<%@ WebService Language="C#" Class="Test" %>

using System;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.Services.Description;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;
using System.Data;

public class Test : WebService {
[WebMethod()]
[return:XmlElement("MyTime", DataType="time")]
public DateTime EchoString([XmlElement(DataType="string")]
string strval) {
return DateTime.Now;
}

[WebMethod()]
[SoapRpcMethod]
[SoapInclude(typeof(Car)), SoapInclude(typeof(Bike))]
public Vehicle Vehicle(string licenseNumber) {
if (licenseNumber == "0") {
Vehicle v = new Car();
v.licenseNumber = licenseNumber;
return v;
}
else if (licenseNumber == "1") {
Vehicle v = new Bike();
v.licenseNumber = licenseNumber;
return v;
}
else {
return null;
}
}
}
[XmlRoot("NewVehicle")]
public abstract class Vehicle {
public string licenseNumber;
public DateTime make;
}

public class Car : Vehicle {
}

public class Bike : Vehicle {
}
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5