Hallå! För att göra överlagrade metoder så får du göra en struktur eller klass som ärver ifrån datatypen. Förstår inte riktigt hur det skulle gå till... ".ToMyOwnDecimalFormat() skulle t.ex. alltid kunna returnera 4 decimaler med givna separatorer för decimal och tusental. Detta skulle innebära att jag bara behövde ändra på ett ställe (OOP) om jag vill ha t.ex. 5 decimaler. " Jag har skrivit ett blogginlägg om precis det : Tack för alla tips! Tja det är väl klart att det blir en egen datatyp :) Du skapar ju en struct, alla structer och klasser blir egna datatyper :POverload på .ToString m.fl.
Har försökt hitta något sätt att göra en "overload" på .ToString. Jag vill uppnå ett enklare sätt att konvertera värden till olika datatyper utan att hålla på med formateringar.
Små exempel:
Dim x as Decimal = 0.03D
response.write(x.ToMyOwnDecimalFormat())
.ToMyOwnDecimalFormat() skulle t.ex. alltid kunna returnera 4 decimaler med givna separatorer för decimal och tusental. Detta skulle innebära att jag bara behövde ändra på ett ställe (OOP) om jag vill ha t.ex. 5 decimaler.
Jag har idag egna funktioner för detta, men det är så bökigt att wrappa värdet i funktionen varje gång, exempel:
response.write(MyFunction.FormatDecimalValue(x))
Jag skulle då enkelt också kunna vända på ett format:
Dim x As String = "0.01"
response.write(x.ToMyOwnDecimalFormat())
Jag skulle också enkelt kunna imlementera ett "filter" som tar bort oönskade tecken (', --, etc).
Någon som har någon idé om hur man kan göra, eller om det ens går?
Skriver en ASP.NET-applikation i VB.NET.
Tack på förhand,
FredrikSv: Overload på .ToString m.fl.
Sv:Overload på .ToString m.fl.
Hur kan jag deklarera min klass så att jag själv kan skapa egna funktioner?
Jag har försökt lite men kommer ingen vart. Någon som har några enkla introsteg till mig så jagkan komma igång???
Tack på förhand,
FredrikSv: Overload på .ToString m.fl.
I ToString() methoden så finns det ju möjlighet att skicka med en IFormatProvider som gör just detta till dig.
På de andra frågorn så är min åsikt samma som Anders gör en statiska metoder i en Utilityklass som tar emot dina värden gör vad du vill med dem och sedan returnerar tillbaka det du vill. Finns nog inget annat sätt som är lika enkelt/effektift.
- MSv:Overload på .ToString m.fl.
http://www.lowendahl.net/showShout.aspx?id=4Sv: Overload på .ToString m.fl.
Jag har mixtrat lite med IFormatProvider och olika options till .ToString.
Jag har testat med att göra en class som ligger i min basklass och där kan jag komma åt olika properties som representerar en IFormatProvider.
Typ...
Dim dValue As Decimal = 13.71D
dValue.ToString(MinFormatklass.Currency, MinFormatklass.FormatTo("SEK"))
Jag uppnår delar av vad jag vill, men ändå inte riktigt. Jag kan göra overload på ToString i min basklass också, men tricket är att jag vill lägga till egna funktioner till de primitiva typerna.
Enligt Hesselbom så går det via aggregation vilket jag aldrig jobbat med. Om det kostar mer minne är inte så farligt och det tål att testas.
Någon här som har bra tips på länkar till sidor där jag kan läsa mer om det, eller om någon har exempelkod?
Till Löwendahl:
Jag fick uppfattningen att ditt bloginlägg mer riktade in sig på att skapa egna datatyper, stämmer det, eller missade jag något i ditt bloginlägg?
Tack på förhand,
FredrikSv:Overload på .ToString m.fl.
Men vad det handlar om egentligen är att gå runt begräsningen som gör att du inte kan ärva från de datatyperna. Du jobbar med inkapsling av din logik och behöver inte flertalet externa funktioner och klasser för att hantera din formatering.
Första gången jag skrev en sådan där så berodde det just på speciella krav vid formattering i en toString, precis som exemplet visar.