Я работаю над приложением (веб-приложение, asp.net и c #), которое зависит от даты и времени, поэтому, исходя из текущей даты, оно запустит формы, которые должен заполнить зарегистрированный пользователь.
Я думал о том, как мы собираемся смоделировать реальное использование приложения для целей отладки и тестирования.
Итак, я говорю о замене всех этих:
DateTime currentDate = DateTime.Now;
с чем-то вроде:
DateTime currentDate = MyDateClass.GetCurrentDate();
И тогда у меня будет класс:
public class MyDateClass
{
private DateTime _currentDate;
public DateTime GetCurrentDate()
{
// get the date, which may be different from DateTime.Now
return _currentDate;
}
public void SetCurrentDate(DateTime newCurrentDate)
{
// set the date to the value chosen by the user
_currentDate = newCurrentDate;
}
}
позволяет мне устанавливать текущие данные, вызывая метод SetCurrentDate, например, в коде кнопки ссылки и в календаре.
Вопрос в том ... как мне точно хранить переменную DateTime во всем приложении? Я не могу работать с сессией в этом классе, верно? Должен ли я работать с темой?
Ну, идеи ценятся :) Заранее спасибо за ваши предложения!
<Ч />
Некоторые обновления по моему вопросу:
Я столкнулся с этим сообщением: Какой хороший способ перезаписать DateTime.Now во время тестирования?
Так же, как вы предоставили здесь свои ответы (спасибо!), Отличные советы для хорошей организации кода, как для целей разработки, так и для тестирования, которые я обязательно рассмотрю в будущем.
У меня все еще остается тот же вопрос: как я буду "держать" значение datetime?
Прямо сейчас я пошел с созданием одной таблицы ячеек в базе данных для поддержания «моего» значения даты и времени.
У меня есть статический класс с функцией GetCurrentDate и функцией SetCurrentDate:
public static class DateManagement
{
public static DateTime GetCurrentDate()
{
// return DateTime.Now;
// OR:
// ...
// SqlCommand cmd = new SqlCommand("select Date from CurrentDate", conn);
// ...
}
public static void SetCurrentDate(DateTime newDate) // used only in debugging
{
// ...
// string insertStr = @"update CurrentDate set Date = '" + date + "'";
// SqlCommand cmd = new SqlCommand(insertStr, conn);
// ...
}
}
Однако сохранение даты в базе данных с таблицей, созданной и используемой только для отладки, не выглядит элегантным решением ...