gpt4 book ai didi

c# - 在 C# 的扩展方法中为调用者变量赋值

转载 作者:行者123 更新时间:2023-12-05 08:00:09 24 4
gpt4 key购买 nike

我遇到了扩展方法的问题。我做了一个通用的扩展方法来获取 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 对象相关的扩展方法,但我想在原始类型中获取值(value)。如果有人对此有想法,请与我分享。提前致谢。

最佳答案

你可以这样做:

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");

关于c# - 在 C# 的扩展方法中为调用者变量赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19158207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com