Generisk operator problem

Tags:    .net

<< < 12 > >>
Hejsa,

Jeg er stødt ind i et lille problem, som jeg håber at der er en derude, der kan hjælpe mig lidt med :)

Jeg har en klasse ved navn HttpParameter. Den klasse indeholder bl.a. metoden:
Fold kodeboks ind/udKode 


Metoden bruges til at parse værdien i HttpParamter instancen til en Enum.
Jeg vil så gerne have lavet det således, at man ikke direkte behøver at kalde metoden. Derfor har jeg prøvet at lave:
Fold kodeboks ind/udKode 


Problemet her er at jeg får at vide, at den ikke kan finde typen eller namespacet 'T'.
Jeg kan ikke rigtigt se andre måder at lave metoden på, så derfor vil jeg lige høre om I har nogle idéer.

På forhånd mange tak.



11 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 8 karma
Sorter efter stemmer Sorter efter dato
Du skrev du gerne vil at man ikke skulle kalde methoden direkte, og så ville jeg foreslå at du implamenterede kaldet i en constructor, men du skriver ikke om den er brugt.



Hvis du kan initialisere en instans af HttpParamter uden et typeparameter, er den ikke (korrekt) generisk. Jeg vil foreslå, at du forsøger at reimplementere din klasse, så du skal instantiere således:
Fold kodeboks ind/udKode 
så burde det nemlig kunne lade sig gøre :-).



Hvis du ikke vil kalde den som metode hvorfor laver du så den ikke som en constructor?



HttpParamter klassen bliver bl.a. brugt til at hente QueryString paramterer.

Pt. kan jeg med den:
Fold kodeboks ind/udKode 

Jeg vil gerne kunne dette istedet:
Fold kodeboks ind/udKode 


Det kan godt være at det er mig der ikke helt forstår dit svar, men hvorledes vil du bruge en constructor til det?



Indlæg senest redigeret d. 13.10.2007 20:40 af Bruger #5372
Jeg tror du misforstår mig.

Pointen er at man implicit kan få castet klassen til en enum af en given type (blandt andet).

På nuværende tidspunkt bliver jeg nød til at kalde en metode, ved navn ToEnum, som så returnere værdien af klassen som værende en enum.

Jeg vil gerne have det lavet, således at man ikke behøver at kalde denne metode direkte, men at den bliver kaldt i forbindelse med den implicitte casting.
Det var dette jeg prøvede at vise med mit eksempel, på den implicitte operator overloading



Indlæg senest redigeret d. 14.10.2007 00:31 af Bruger #5372
Okay.... så kan jeg squ ikke komme med noget mere...



Tror jeg ikke du kan.

Såvidt jeg husker fra dengang jeg kodede i C#, så krævede den at stort set alt blev castet og kaldt explicit. Dette kan selvfølgelig have ændret sig, skal jeg ikke kunne sige.



@mikl-dk
Jeg vil helst undgå at lave hele klassen generisk, da det ikke er sikkert jeg kender til typen på oprettelses tidspunktet.
Eks.:
Fold kodeboks ind/udKode 

Mit spørgsmål er så lidt om det kan lade sig gøre, at gøre det samme med en enum af en given type, via en implicit operator overload, når klassen i sig selv ikke må være generisk?



Prøv at lave forsøget med at lave hele klassen generisk, og se hvad der sker. Så har du lidt at gå efter :-).



Jeg ved godt at det kan lade sig gøre ved at lave hele klassen generisk, men det ødelægger så lidt klassen, og det at den samme instans implicit kan castes til forskellige typer.

Derudover, så er det som sagt ikke sikkert at jeg kender til typen på oprettelses tidspunktet for klassen. = Jeg kan ikke instansiere den generiske klasse med en given type, når jeg på daværende tidspunkt ikke ved hvad den givne type er!



<< < 12 > >>
t