Convert.ChangeType - hvis du ikke kan lide typen!

Published 18 May 08 08:54 AM

Mine weekender plejer at være lukket land for arbejde, computer og teknologi bøger. Med andre ord - der skal slappes af når jeg har fri! Det er dog svært når at lade være med at kode, da jeg ikke får lov til det på arbejdet (der er ikke tid!). Jeg sniger mig simpelthen ind i Visual Studio, enten tidligt om morgenen eller sent om aftenen, får et lille smil på læben og danser så lægger det så fra mig igen efter et par timer. Sådan er det - lige nu ihvertfald.

Når jeg så endelig har lidt tid til at kode, så er det ActiveDeveloper der står for tur, og vi er jo ved at lave den om til .NET, og det er et hyggeligt projekt - du ved, data ind, data ud..bla bla bla!

Jeg skulle lave en generisk QueryString hjælpe metode (Helper/Util klasse...hehe). Den skulle være sat op sådan, at man meget simpelt, giver metoden det nøgle navn (profile.aspx?name=daniel) til den querysting man er på udgik efter og returnere værdien af nøglen (daniel).

Jeg kendte imidlertidigt ikke pågældende funktion, men den har vist sit værd og nu synes jeg den skal bruges overalt :0)

I får lige VB.NET udgaven først, så ved jeg en vist hr. Jokumsen bliver glad for mig.

Public Class QueryStrings(Of T)

    Public Shared Function GetQueryStringValue(ByVal key As String) As T
        Dim value As T = Nothing
        If HttpContext.Current.Request.QueryString(key) IsNot Nothing Then
            value = DirectCast(Convert.ChangeType(HttpContext.Current.Request.QueryString(key), GetType(T)), T)
        End If

        Return value
    End Function
End Class

---

Og C# udgaven.

public static class QueryStrings<T>
{
    public static T GetQueryStringValue(string key)
    {
        T value = default(T);
        if ( HttpContext.Current.Request.QueryString[ key ] != null ) {
            value = (T)Convert.ChangeType(HttpContext.Current.Request.QueryString[ key ], typeof(T));
        }

        return value;
    }
}

---

Keep codin'

Filed under:

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# Jesper Blad Jensen said on May 18, 2008 7:00 AM:

Den er nemlig god :)

Jeg bruger den i et system jeg bruger til at jeg automatisk kan få værdier fra kontroller ind i mine objekter, et ganske lille smart system som jeg nok skal poste når det engang lige er testet ordenligt. Men det er rart da jeg er fri for koden:

Person.Firstname = PersonTextbox.Text

Men det jeg brugte den til er at hvis jeg har en Alder property på min person, og jeg bruger en textbox til at skrive værdien i, så kan jeg skifte typen fra den ene til den anden uden at lave en stor grim switch statement.

# Mark S. Rasmussen said on May 18, 2008 7:42 AM:

Der bør følge det råd med aldrig at benytte en funktion som denne med value typer. Det kan blive et helvede at debugge når din QueryStrings<int>.GetQueryStringValue("id") returnerer 0, når key'en ikke findes i querystringen.

Dvs. benyt altid nullable types eller string, aldrig value typer direkte.

Leave a Comment

(required) 
(optional)
(required) 

  
Enter Code Here: Required

This Blog

Syndication

Page view tracker