Есть необходимость задавать текстовую маску для двух компонентов разных типов. Каждый из них эту возможность поддерживает. Хочу решить это одним методом. Ранее никогда не пользовался, думаю пришло время изучить универсальные методы с . Пишу так:
public static void SetDocNumMask<T>(int id_doctype, ref T ctrl)
{
ctrl.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.Simple;
ctrl.Mask.EditMask = new string('0', 9);
}
Студия ругается на слово Mask
Severity Code Description Project File Line Category Source Suppression State Error CS1061 'T' does not contain a definition for 'Mask' and no extension method 'Mask' accepting a first argument of type 'T' could be found (are you missing a using directive or an assembly reference?)
Вызываю метод в двух местах
Mask.SetDocNumMask<DevExpress.XtraEditors.ComboBoxEdit>(doc_type, ref cbDocNum);
Mask.SetDocNumMask< DevExpress.XtraEditors.Repository.RepositoryItemTextEdit>(id_doctype, ref repForDocNum);
Что я делаю не так?
Считайте, что в вашем случае T
- это object
. Никто не дает гарантии, что в ctrl
будет свойство Mask
. Для того, чтобы это гарантировать, необходимо указать ограничение - базовый тип или интерфейс, который это свойство содержит:
interface IMasked
{
MaskType Mask { get; }
}
public static void SetDocNumMask<T>(int id_doctype, ref T ctrl)
where T: IMasked // <<----
{
ctrl.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.Simple;
ctrl.Mask.EditMask = new string('0', 9);
}
З.Ы. Если тип может быть прямо вообще-вообще любой и никакого базового типа/интерфейса с Mask
его не унаследовать, то можно ctrl
объявить как dynamic
. Проблемой будет плохая читаемость и отсутствие статической проверки типа компилятором.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Проблема заключается в следующем, на стороне клинта, клиент может запустить задачу и она начинает выполняться на стороне сервера, а клиент...
Есть DataGridViewПодскажите, возможно ли изменить цвет границы всех ячеек? К примеру, сделать зеленым
Добрый день! В php есть функция exif_read_data, которая должна отдавать информацию о изображенииПри обработке изображения, загруженного со смартфона,...