Come fare in modo che il Framework scambi due tipi diversi per lo stesso: Ovviamente con cio' intendo due tipi complessi che pero' in realta' hanno la stessa struttura (ma per ragioni non precisate e che sono al di fuori del nostro controllo non sono lo stesso identico OGGETTO)
Basta fare:
internal
tipoProva1 ConvertGetList(tipoProva2 list)
{
//Piccolo trucco per convertire due tipi (che in realta' sono identici)
string s1 = this.Serialize(list,typeof(tipoProva1));
return this.DeSerialize(s1,typeof(tipoProva1));
}
dove Serialize e' ovviamente una cosa del tipo:
public
string Serialize(object o, Type type)
{
XmlSerializer serializer =
new XmlSerializer(type);
StringBuilder s = new StringBuilder();
TextWriter writer = new StringWriter(s);
serializer.Serialize(writer, o);
writer.Close();
return s.ToString();
}
e deserialize invece e' del tipo:
public
tipoProva1 DeSerialize(string strXml, Type type)
{
StringReader r = new StringReader(strXml);
XmlSerializer serializer =
new XmlSerializer(type);
tipoProva1 obj = (tipoProva1) serializer.Deserialize(r);
return obj;
}
Alla fine abbiamo il tipoProva1 partendo da un tipoProva2.
....non chiedetemi perche' ci si puo' trovare in una situazione del genere...a me e' capitato analizzando del codice preesistente con delle WebReference e la definizione di tipi che in realta' erano identici; facendo le dovute modifiche al codice, cercando di evitare di andare a modificare le Web Reference (generate in modo automatico), ho introdotto lo State Pattern, quindi di se ho dovuto fare in modo che questi tipi confluissero in un qualche modo in un tipo comune.
Probabilmente c'era un modo migliore per fare questa cosa, ma e' stata la soluzione + veloce che mi e' venuta in mente!
Ovviamente accetto ogni sorta di suggerimento...chissa che non riesca ad imparare qualcosa, magari evitando questi subdoli trucchetti...