Hmmm... HentBilSomXmldocument() havde jeg forsøgt med, men jeg forsøger at minimere antallet af metoder, jeg har nemlig tre metoder, hvortil jeg så også skal lave en AsXmlDOcument version.
Ja, jeg vil ikke bruge reflection....
Hele ideen er at jeg vil overlade det til ham, der implementerer mine metoder om han vil have et xmldocument eller almindelig bil objekt...jeg legede lidt med tanken om man kunne løse det med delegates.
public T HentBil<T>(int id, bool d = false) where T : Bil
hehe.. så kan du jo bare undlade den optionale :)
Anyway.. du kan da godt lave et factorypattern, men du skal alligevel reflecte lidt eller som Arne skriver spørge på typen.
Hvis du virkelig gerne vil gøre det dynamisk og smart uden at bryde open-closed principle kan jeg måske lave en kodestump til dig hvor du skal bruge Structuremap, men det ved jeg ikke om du vil kaste dig ud i?
Og jeg er tilboejelig til at mene at det slet ikke er dit API som skal tilbyde den, men at du skal lade caller af dit API lave en saadan hvis vedkommende oensker det.
Uden restriction paa T bliver den jo klasket paa alt og hvis alle API'er begynder at tilbyde helt generelle extensions methods, saa bliver det hurtigt noget rod.
public static XmlDocument ToXmlDocument<T>(this T entity) where T : BaseClassOrInterfaceForAllYourClasses
Jo, men gør jeg den ikke restriktiv ved at gøre den private? Dog ryger generics delen måske lidt, da den bliver private. Jeg kan bedre li' interface versionen, da den også skal bruges på andre klasser.
Jeg har lidt svært ved at finde en god placering af min extension metode. Lige nu ligger den i en BilManager klasse, og den skal jo bruges i andre klasser...hvor synes du, den kan ligge?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.