DeserializeObject <> ()

Status
Niet open voor verdere reacties.

sneezesnoeze

Gebruiker
Lid geworden
3 feb 2008
Berichten
41
var patient = JsonConvert.DeserializeObject<PatientDTO>(result)

Ik probeer bovenstaande code te begrijpen.

Maar snap niet wat de functie is van <PatientDTO>

Waarom staat op deze plaats een type aanduiding.

Is het een collection
een Task
of
een uitgebreidere beschrijving van een methode

??
 
Deserialize is een methode voor Json convert om een .Net object te converteren naar een String.
<PatientDTO> zal een .Net object zijn en (result) de resulterende String, bestaande uit 1 of meerdere entiteiten met hun waarde.

Kijk ook eens hier:
http://www.newtonsoft.com/json/help/html/serializingjson.htm
 
Laatst bewerkt:
Deze site heeft mooie voorbeelden maar als er geen uitleg bij staat, zegt het me nog steeds weinig.

Ik programmeer al wat langer, misschien is dat nu een nadeel.

Ik verwacht bij het aanroepen van een methode,

naam methode(parameters)
Het return type staat dan in de methode definitie, maar schijnbaar hier niet.
maar goed hier wordt ook gebruik gemaakt van het VAR-type voor patient. Dat werd eerder ook niet aangeraden, maar toen was var ook nog ongedefineerd.

var patient = JsonConvert.DeserializeObject<PatientDTO>(result)

Ik ben niet zo zeer opzoek naar de wat de functie doet als wel, waarom bepaalde tekst op bepaalde plaats staat.
 
Het 'var' keyword is in dit geval hetzelfde als PatientDTO, als je in visual studio met je muis op var staat zal er een tooltip komen die het daadwerkelijke type laat zien.
Als je begint dan is het (naar mijn mening) beter om het echte type te gebruiken, later zul je steeds vaker 'var' gebruiken. In het begin met lange types en misschien nog niet bij int of string maar later daar ook. (mijn ervaring)

voorbeeld:
Code:
ObservableCollection<PatientDTO> patientDTOs = new ObservableCollection<PatientDTO>();
->
Code:
var patientDTOs = new ObservableCollection<PatientDTO>();

Waarom 'var'? Gewoon omdat dat een stuk vlotter en overzichtelijker is, ook met wijzigingen.



Waarom de <PatientDTO> ? Dit is in dit geval het return type als een generic type zodat je zelf het type kunt toevoegen om dat type terug te krijgen net zoals je generics gebruik voor een lijst List<T> -> List<PatientDTO>
Zelf geef je json als parameter mee en omdat je zelf de patientDTO hebt gemaakt zal de method de juiste properties vullen met de json data.

Je zou natuurlijk ook het type als parameter mee kunnen geven in de method maar dan kun je niet dat bepaald type als return value hebben. En met generics kun je dat type ook gebruiken in de method zelf zoals een 'new T' maken in de method.
Dit kan door bepaalde dingen toe te voegen aan de method zodat wat je tussen < > kunt zetten gelimiteerd wordt tot bepaalde baseclass of een lege constructor bijvoorbeeld.

voorbeeld:
Code:
public T Initialize<T>() where T: class, new()
{
	T instance = new T();

	//do stuff

	return instance;
}

Code:
var dto = Initialize<PatientDTO>();

Als je her en der wat code voorbeeldjes bekijkt op internet dan zul je misschien iets tegenkomen dat je in je eigen code kunt gebruiken om bepaalde dingen makkelijker te maken.
Want stel je voor dat je voor elke DTO class een aparte DeserializeObject methode zou hebben... voor een handje vol classes is dat niet zo'n probleem, maar als je er veel hebt is begint het toch wel lastig en on overzichtelijk te worden. Ook als je zo'n algemene methode hebt hoef je niet weer een method te maken als je een nieuwe DTO class zou maken.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan