Anonymoustype problemer

Tags:    c#

Hej. Jeg har et problem med, hvordan man returnere resultater fra en C# Class
Fold kodeboks ind/udKode 


til en Page_load?

Altså så man kan skrive Users.GetUserInfo(id).UserName;

Jeg har brugt lang tid på at finde løsningen og det er helt sikkert simplet :)
Men håber i kan hjælpe




1 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Problemet i din kode er din return type. Ja, du laver en anonymoustype i din linq-statement, og du kan godt skrive result.Username inde i metoden, men når din returntype er et object vil du udenfor metoden kun have adgang til object's funktionaliteter. Inde bagved ligger stadig den anonymoustype, der blev oprettet i din metode, men du kan ikke tilgå dennes data før den er castet til sit originale format.

Jeg vil aldrig sige at noget er umuligt når man skal programmere, men det er nok ret besværligt i det her tilfælde...og så er spørgsmålet selvfølgelig om det i det hele taget er ønskværdigt at gøre når det er så besværligt :)

Jeg ville nok foreslå dig at lave en rigtig class at putte dataen ind i og så return den, men hvis du virkelig insisterer på at have en anonymous returntype kan det lave sig gøre at lave et cast til din anonymoustype.

Når C# i begrunden laver den class, der benyttes ved oprettelsen af en anonymoustype, er den smart nok til ikke at oprette den samme "class" igen hvis der allerede eksisterer en med de samme properties. Ved hjælp af generics kan man, med følgende metode, snyde den til at cast til en anonymous class den selv har oprettet:
Fold kodeboks ind/udKode 


Metoden fungerer ved, at du sender dit object fra din metode med ind som første parameter og som anden parameter opretter du en ny anonymoustype med samme properties som dem du brugte inde i metoden. Din kode ville altså skulle se nogenlunde sådan her ud:
Fold kodeboks ind/udKode 



...men jeg ville nu anbefale dig at lave en rigtig class, det er trods alt ikke så svært ;)




t