3

拡張方法に問題があります。QueryString を取得するための汎用拡張メソッドを作成しました。特定のタイプの変数を使用してそのメソッドを呼び出しています。どのタイプのデータが QueryString に付属していますか。私の拡張方法を以下に示します。

public static class my
{
    public static void GetQueryString<T>(this T caller, string queryString)
    {
        if (HttpContext.Current.Request.QueryString[queryString] != null)
        {
            T type = (T)Convert.ChangeType(HttpContext.Current.Request.QueryString[queryString], typeof(T));
            caller = type;
        }
    }

    public static void GetQueryString(this Employee caller)
    {
        caller.ID = 23;
    }
}

文字列変数を宣言してから拡張メソッドを呼び出すために、クエリ文字列から文字列値を取得したい。「t1」変数でクエリ文字列の値を取得したい。

 string t1 = string.Empty;
 t1.GetQueryString("name");

しかし、値は呼び出し元変数には入っていません。同じことがEmployeeオブジェクトに関連する拡張メソッドで動作していますが、プリミティブ型で値を取りたいです。誰かがそれについて考えているなら、私と共有してください。前もって感謝します。

4

1 に答える 1

0

あなたはこれを行うことができます:

public static T GetQueryString<T>(this T caller, string queryString)
{
    if (HttpContext.Current.Request.QueryString[queryString] != null)
    {
        T type = (T)Convert.ChangeType(HttpContext.Current.Request.QueryString[queryString], typeof(T));

        return type;
    }
}

string t1 = string.Empty;
t1 = t1.GetQueryString("name"); // return the value and reassign

GetQueryStringしかし、私はその方法をテストしませんでした。私が考えることができる唯一の方法は、拡張メソッドなしです:

public static T GetQueryString<T>(ref T caller, string queryString)
{
    if (HttpContext.Current.Request.QueryString[queryString] != null)
    {
        T type = (T)Convert.ChangeType(HttpContext.Current.Request.QueryString[queryString], typeof(T));

        return type;
    }
}

GetQueryString(ref t1, "name");
于 2013-10-03T11:54:03.943 に答える