Рефакторинг C #, неуверенность в сообщениях об ошибках при преобразовании в статический метод - PullRequest
0 голосов
/ 07 марта 2012

Я немного застрял в рефакторинге своего кода, чтобы сделать метод доступным для другой страницы. У меня есть следующий код, который доставляет мне проблемы. Может быть, есть лучший взгляд на это? По сути, я пытаюсь сделать функцию статичной, чтобы я мог повторно использовать код, но это сбивает меня с толку.

public static Table BuildProjectTable(string CRNumber)
{
    LinkButton SelectLink = new LinkButton();
    SelectLink.ID = CRNumber + "," + ShipId + "," + StageId;
    ProgressStatus CurrentStatus = AAGlobal.GetProgressStatus(CRNumber, ShipId, StageId);
    SelectLink.Text = CurrentStatus.CurrentAssignee;
    SelectLink.BackColor = CurrentStatus.CurrentStatus;
    SelectLink.ForeColor = Color.White;
    BodyCells[CellCount].BackColor = CurrentStatus.CurrentStatus;
    BodyCells[CellCount].ForeColor = Color.White;

    // This fails because SelectLink_Click isn't static (I think)
    //
    SelectLink.Click += new EventHandler(SelectLink_Click);

    BodyCells[CellCount].Controls.Add(SelectLink);

    CellCount++;
}


// If I make this static (fixing above error), Session, Response and lstProcess
// all complain an object reference is required

public void SelectLink_Click(object sender, EventArgs e)
{
    LinkButton ClickedLink = (LinkButton)sender;
    string[] ClickRef = ClickedLink.ID.ToString().Split(',');

    Session["CR_NUMBER"] = ClickRef[0];
    Session["SHIP_ID"] = ClickRef[1];
    Session["STAGE_ID"] = ClickRef[2];
    Session["PROCESS_NAME"] = lstProcess.SelectedValue;

    Response.Redirect("~/EditStage.aspx");
}

1 Ответ

2 голосов
/ 07 марта 2012

Что такое "lstProcess"?Это статично?

Если это не так, ваша проблема может возникнуть из-за этого ...

Кроме того, если вы делаете asp.net, Session, Response, Cookies, .. не статичнымии зависит от запроса.Это объясняет, почему у вас нет к ним доступа. В любом случае, делать EventHandler статическим не очень хорошая идея.

Возможно, вам стоит подумать о создании нового статического метода, который принимает Session и все, что вам нужно в параметрахи вызывая его из EventHandler.

...