public T function Hej<T>(...)
...kod...
Type tmp = //typ av ett objekt jag skapat.
object o = Hej<???>(...); här vill jag göra ett rekursivt anrop med typen tmp.
Jag vill alltså göra Hej<tmp>. Men det fungerar ju inte. Kan man på något sätt konvertera en vanlig Type till en generisk "type T". ?
Det är en OR-mapper. Loopar genom en klass och sen när jag kommer till en relation så vill jag hämta dess "klass" genom ett rekursivt anrop. Detta anrop ska ju ske med den typ som relationensklassen är av. Ussh blev rörigt...
Tänke bara om det fanns något smart sätt att konvertera från en vanlig Type till en "T" men det verkar det ju inte...
En fullösning som jag drar mig för att använda är väl något i stil med:
public T Hej<T>(int i)
{
T result = Activator.CreateInstance<T>();
return (T)Hej(result.GetType(),i);
}
public object Hej(Type t, int i)
{
...work...
}
Det är en OR-mapper. Loopar genom en klass och sen när jag kommer till en relation så vill jag hämta dess "klass" genom ett rekursivt anrop
Generellt skulle jag avråda dig till att göra det, då du faktiskt inte vet om du vill använda den information i din applikation vid just det tillfälle som du visar ditt "huvudobjekt".
Här är ett extrem exempel:
Du har en kund till denna kund finns något som heter Order och för varje Order så finns det Orderrader till varje orderrad så finns en produkt...
Just denna kund är en väldig shopsugen kund och har lagt mer än 10.000 ordrar där man har handlat för minst 10 produkter till varje order. Om det nu är så att du vill kunna se denna kundsadress så är du inte intresserad av att se alla hans ordrar och vilka produkter som finns i varje order, du är bara intresserad av hans leveransadress.
Men ditt förslag så kommer du hämta alla denna orderinformation fast du inte behöver den, och detta tar prestanda.
Om du istället väljer att bara hämta den information som finns i kundtabellen och sedan hämtar övrig information när de behövs (kallas lazy-loading) så får du bättre prestanda...
om du ändå väljer att göra som du vill så får du göra din fullösning.