Лапшекодим валидацию, или запрещаем вводить неправильные данные?
все строки можно захардкодитьВероятно кто то просто не в курсе как делается локализация текста в атрибутах.
И как же она делается?
Если что, я про то, как будет выглядеть портянка атрибутов, когда туда прикрутят локализацию и всё прочее подобающее, что в реальных приложениях используется. Вы мне говорили, что вам портянка свойств не нравится. А мне не нравится портянка атрибутов, за которым свойств не видно.
но с моей точки зрения, достаточно иметь просто набор нормальных контролов, которые делают все основные валидации для своего типа данных внутри себя.Просто не для всех задач подобный подход будет приемлем.
Ну да, на платформах, где нет нормальных контролов, придётся костылить и лапшекодить.
Зачем валидировать что-то, что пришло из контрола, который в принципе не допустит неправильных данных?
------
Уххх-хухх...
Я и спросил - у вас валидация на каждый слой? И между всеми слоями гуляет модель с атрибутами? И на каждом слое в эту модель лезет портянка с рефлексией вместо обычного чтения свойства Min или Max? Вы точно боретесь за 10-15% производительности?
Зачем валидировать что-то, что пришло из контрола, который в принципе не допустит неправильных данных?
------
Уххх-хухх...
А примеры приводите. ))
А там идёт проходка валидации по всем пропертям атрибута, берётся первая ошибка и выводится. Устранили - снова проходка валидации по всем пропертям атрибута. И так каждый раз. Фигли нам, котонам - 8 ядер, 16 потоков и 64 ГБ оперативы есть у всех, не так ли? Главное, потом тиснуть статейку или на форумах пожаловаться, как проклятый WPF жрёт гигабайт после старта главного окна, а виноват во всём как всегда Билл. ))
Разумеется - нет! Но над другим решением думать надо!!! А у прапорщиков с этим обычно проблемы...
Думать тут как раз особо не надо. Зафигачил всё в атрибуты, загуглил портянку, чтобы из этих атрибутов всё доставать, и впендюрил в свой говнокод. А потом отважно борешься за 10-15% производительности. Если сторонний помидор не увидит, то можно даже за самого крутого альфакодера на фирме сойти. Незаменимый. ))
Могу кстати, поздравить со шнобелевской премией - ещё никто из разработчиков библиотек не додумался делать предлагаемый способ валидации. Может патент еще оформить и всем продавать?
Миллионы мух не могут ошибаться. Толпы скриптизёров, лезущие со своим самым лучшим языком во все щели, не дадут соврать. ))
Тут надо не давить большинством разработчиков, а привести аргументы, почему у нас на атрибутах свет клином сошёлся. Большинство разработчиков легко и быстро перейдут с одного дерьма на другое, или даже с нормальной платформы на дерьмовую, стоит их поманить длинным баксом, а то и просто дать пинка для ускорения. Поматерятся, но перейдут. )
Кстати, а что, MAUI уже релизнулся?Как обещали
https://github.com/dotnet/maui/releases/tag/6.0.312
Всего 13 дней назад, а Телерик уже сварганил пачку контролов для него? Ну как с такими конкурировать, когда у них инсайд? Ты ещё думаешь, пробовать или нет, а у них уже в продакшене. ))
Достаточно просто[DisplayName("My sample text")]--> [Ml_DisplayName(1, "My sample text")]
Какой-то кастомный атрибут, с переписанным интерфейсом доступа к локализованным ресурсам? И так все атрибуты переписаны?
Всего 13 дней назад
А может стоит посмотреть немного больше
- May 10, 2022 - .NET MAUI Release Candidate 3
- April 26, 2022 - .NET MAUI Release Candidate 2
- April 12, 2022 - .NET MAUI Release Candidate - Ready for Cross-Platform App Development
И всё это нужно еще правильно "подключить"
В смысле? Надеюсь, вы не будете привязывать AgeMin к NumericUpDown.Max и наоборот? Как раз с подключением проблемы могут быть в вашем подходе - нужный базовый класс не забыть для каждой модели, в зарметке стиль с тултипчиком для каждой страницы, ещё по мелочам наверняка.
В примере у человека, кстати, по стилю на каждый тип контрола надо добавлять. Т.е. не забыть вставить портянку для каждой новой вьюхи. Ну или через словарь ресурсов, но тогда следить, чтобы стиль не был перезаписан в конкретных вьюхах. А всё почему? Потому что этот подход используется для тупейших контролов - голых текстбоксов, не умеющих ничего, в которые фигачат все подряд типы вводимых данных.