Я пытаюсь использовать метод расширения, чтобы инициализировать элемент управления datetimepicker на предыдущий рабочий день с сегодняшнего дня. Однако это вызывает мое окно дизайна формы, чтобы показать ошибку, поскольку это не может найти метод расширения.
Вы можете быстро повторить эту ошибку, создав новую форму окна, добавив указатель даты и времени. Затем создайте следующий новый класс для расширения DateTime и добавления метода NextDay ():
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ExtensionMethodDesignWindowTest
{
public static class DateTimeExtensions
{
public static DateTime NextDay(this DateTime date)
{
return date.AddDays(1);
}
}
}
И, наконец, в Form1.designer.cs добавить строку
this.dateTimePicker1.Value = DateTime.Today.NextDay();
в разделе datetimepicker1.
(редактировать: а также используя.system; вверху)
Когда вы вернетесь обратно в окно дизайна формы, вы должны увидеть ошибку. Обратите внимание, что этот код работает нормально и работает правильно, а указатель даты и времени показывает завтрашнюю дату при загрузке формы. Также, если вы замените добавленную строку в Form1.designer.cs на
this.dateTimePicker1.Value = DateTime.Today.AddDays(1);
Тогда вы не получите ошибку в окне дизайна. Это заставляет меня предположить, что ошибка в том, что окно дизайна формы Windows не может видеть пространство имен ExtensionMethodDesignWindowTest.
Как сделать так, чтобы окно дизайна формы могло видеть мои методы расширения?
Спасибо
Dan
кстати, хотя я сомневаюсь, что это имеет значение, вот некоторая информация о версии IDE для того, что я использую:
Microsoft Visual Studio 2010
Версия 10.0.30319.1 RTMRel
Microsoft .NET Framework
Версия 4.0.30319 RTMRel