settembre 2004 Entries
Advanced Serialization...

Oggi volevo ritornare su alcune prove relative alla serializzazione che ho fatto qualche giorno fa:

Ho trovato questo articolo di Juval Lowy:

Format Your Way to Success with the .NET Framework Versions 1.1 and 2.0

una delle cose piu' carine che ho letto e' ad esempio il caso in cui ho due versioni di una classe, nella seconda versione aggiungo un field ma voglio comunque fare in modo che vengo serializzato quello che si aspetta la seconda versione e deserializzato da una libreria che invece supporta la prima ignorando il fatto che sia stato aggiunto un field:

//Version 1.0
[Serializable]
public class MyClass {
   public int Number1;
}
//Version 2.0
[Serializable]
public class MyClass {
   public int Number1;
   [OptionalField] 
   public int Number2;
}
nell'articolo c'e' molto altro...
Visto che qualche giorno fa ho visto nelle news la presentazione di Schematron

Visto che qualche giorno fa ho visto nelle news la presentazione di Schematron....nome che mi ricordava solo gli eroi del famoso cartone Transformers.....e siccome ignoravo cosa fosse, ho deciso di dare un'occhiata a questo articolo di Dare Obasanjo : Improving XML Document Validation with Schematron

25 Comments Filed Under [ XML e System.XML ]
Serializzazione con .NET : Come fare in modo che il Framework scambi due tipi diversi per lo stesso

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...

6 Comments Filed Under [ XML e System.XML ]
NUnit e l'App.config

Chiunque si trovasse alle prese con Nunit ed  un'applicazione di Test di tipo Library, con un file di configurazione, suggerisco caldamente di:

  1. Installare l'addin NunitAddIn (per utilizzare i test all'interno dell'ambiente VS .NET...altrimenti comunque non sono riuscito ad usare i file .config)
  2. Mettere il file di configurazione sotto la cartella root della dll (di solito bin/debug) e nominarlo come [NomeApplicazioneTest].dll.config

Cosi' tutto dovrebbe andare liscio!

....codice C#....Scritto come VB6 (senza offesa)

Oggi sono alle prese con una libreria scritta in C#....ma PER NIENTE OO, DISASTROSO!

Alla prima modifica che dovro' apportare avro' dunque finalmente l'occasione di applicare tutti i principi sul Refactoring dei quali ho letto nei libri di Martin Fowler e Kent Beck.

.....Anche se speravo che questa disavventura mi capitasse il piu' tardi possibile o utopisticamente MAI.

Mock Objects to the Rescue! Test Your .NET Code with NMock

Ecco il link: http://msdn.microsoft.com/msdnmag/issues/04/10/NMock/default.aspx

This article discusses:

  • The role of Mock objects
  • How to acquire and use NMock
  • Overview of a shopping sample
  • Design guidelines for testability

...sembra interessante....

C# vs. Java

Per chi non lo avesse ancora letto e soprattutto per chi deve passare da Java al C#, ecco una gran bella comparazione dei 2 linguaggi: C#.vs Java

View State Decoder

View State Decoder di Fritz Onion

This utility lets you decode the hidden viewstate field on any .aspx page to view the contents in a treeview, as raw text, or as parsed xml. Simply type in the URL of the page whose viewstate you want to decode or extract the viewstate by hand, and hit the decode button.

3 Comments Filed Under [ ASP.NET ]
Fallacies of Validation

Roger Costello scrive nel suo blog:

The purpose of documenting the below "fallacies" is to identify erroneous
common thought that many people have with regards to validation and its role
in a system architecture.  Perhaps "assumptions" would be a better term to
use than "fallacies".  In any case, the desire of this writeup (which is a
compilation of discussions on the xml-dev list) is to provoke new ways of
thinking about validation, and reject limiting and static views on
validation. 

Fallacies of Validation

1. Fallacy of "THE Schema"

2. Fallacy of Schema Locality

3. Fallacy of Requisite Validation

4. Fallacy of Validation as a Pass/Fail Operation

5. Fallacy of a Universal Validation Language

6. Fallacy of Closed System Validation

7. Fallacy that Validation is Exclusively for Constraint Checking


 

MCP 70-320 Passed!!!!

Oggi ho passato l'esame 70-320! Ho fatto 984/1000 punti!!! 

9 Comments Filed Under [ Certificazioni ]