Не уверен, что я согласен с дизайном, но учитывая то, что вы хотите достичь, попробуйте следующее.
- Установить кодовые контракты от http://research.microsoft.com/en-us/projects/contracts/
- Переписать ваши Debug.Asserts в Contract.Assert
- Затем измените свойства проекта, чтобы проверять только контракты в отладочной сборке.
Так что, кажется, вашу проблему легче всего решить, заменив debug.assert следующим:
//Throw an error only if there is a problem with
Contract.Assert(button!=null);
Однако я, вероятно, изменил бы дизайн, чтобы сделать работу, выполняемую с помощью кнопки ссылки, следующим способом, предполагая, что с кнопкой ссылки могут происходить другие вещи.
Таким образом, ваш код выше будет:
public void MyMethod(EventArgs e)
{
var button = e.Row.Cells[5].FindControl("linkButtonName") as LinkButton;
SetButtonVisibility(button);
}
public void SetButtonVisibility(LinkButton button)
{
//The button is never null so its a contract
Contract.Requires<ArgumentNullException>(button != null);
button.Visible = (schedule.CreatedBy == Authentification.GetLoggedInUser());
}
Надеюсь, это поможет.