Я пытаюсь скомпилировать следующий код:
public static void RequireOrPermanentRedirect<T>(this System.Web.UI.Page page, string QueryStringKey, string RedirectUrl, out T parsedValue)
{
string QueryStringValue = page.Request.QueryString[QueryStringKey];
if (String.IsNullOrEmpty(QueryStringValue))
{
page.Response.RedirectPermanent(page.ResolveUrl(RedirectUrl));
}
try
{
parsedValue = (T)Convert.ChangeType(QueryStringValue, typeof(T));
}
catch
{
page.Response.RedirectPermanent(RedirectUrl);
}
}
Но я получаю ошибку компилятора:
Error 1 The out parameter 'parsedValue' must be assigned to before control leaves the current method
Это метод расширения, который я использовал некоторое времяно я хотел немного расширить его, чтобы мне не пришлось повторно анализировать значение, чтобы использовать его внутри страницы.
Текущее использование:
Page.RequireOrPermanentRedirect<Int32>("TeamId", "Default.aspx");
int teamId = Int32.Parse(Request.QueryString["TeamId"]);
То, что я хотел, чтобы иметь возможностьdo:
private Int32 teamId;
protected void Page_Load(object sender, EventArgs e)
{
Page.RequireOrPermanentRedirect<Int32>("TeamId", "Default.aspx", out teamId);
}
Текущий (рабочий) код, который я только что создал и выбросил T value
:
try
{
T value = (T)Convert.ChangeType(QueryStringValue, typeof(T));
}