Я хотел бы сравнить две строки с синтаксисом ^([A-Z]\d{2}![A-Z]{2}\d|[A-Z]{3})$ или ^\d {3}$ соответственно для обеих строк с двумя разными методами расширения, но с одинаковым именем IsHigher(источник этой строки, цель строки).
Это кажется возможным использовать одно и то же имя метода, поскольку они определены в двух разных статических классах VersionsExtensions и IssuesExtensions для разделения логики (я не хочу определять соответствующее сравнение внутри метод, а скорее определять его внешне и неявно). Следовательно, можно ли во время выполнения «перенаправить» на правильный метод, основанный на синтаксисе строки, с помощью такого атрибута, как [RequiresSyntax(...)], например, для ограничения строки?
"A00".IsLower("B00");
"001".IsLower("002"); // I still want to keep them as string instead of number.
Изменить:
public static IsHigher(this string source, string target)
{
var regex = new Regex("^([A-Z]\d{2}![A-Z]{2}\d|[A-Z]{3})$");
if (regex.IsMatch(source) && regex.IsMatch(target))
{
return Version.IsLower(source, target); // Static specific method.
}
regex = new Regex("^\d{3}$");
if (regex.IsMatch(source) && regex.IsMatch(target))
{
return Issue.IsLower(source, target);
}
throw new Exception(
$"Unable to compare \"{target}\" with \"{source}\"!");
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... -on-syntax
Методы расширения строки C# с тем же именем на основе синтаксиса ⇐ C#
Место общения программистов C#
-
Anonymous
1729551057
Anonymous
Я хотел бы сравнить две строки с синтаксисом ^([A-Z]\d{2}![A-Z]{2}\d|[A-Z]{3})$ или ^\d {3}$ соответственно для обеих строк с двумя разными методами расширения, но с одинаковым именем IsHigher(источник этой строки, цель строки).
Это кажется возможным использовать одно и то же имя метода, поскольку они определены в [b]двух разных статических классах[/b] VersionsExtensions и IssuesExtensions для разделения логики (я не хочу определять соответствующее сравнение внутри метод, а скорее определять его внешне и неявно). Следовательно, можно ли во время выполнения «перенаправить» на правильный метод, основанный на синтаксисе строки, с помощью такого атрибута, как [RequiresSyntax(...)], например, для ограничения строки?
"A00".IsLower("B00");
"001".IsLower("002"); // I still want to keep them as string instead of number.
Изменить:
public static IsHigher(this string source, string target)
{
var regex = new Regex("^([A-Z]\d{2}![A-Z]{2}\d|[A-Z]{3})$");
if (regex.IsMatch(source) && regex.IsMatch(target))
{
return Version.IsLower(source, target); // Static specific method.
}
regex = new Regex("^\d{3}$");
if (regex.IsMatch(source) && regex.IsMatch(target))
{
return Issue.IsLower(source, target);
}
throw new Exception(
$"Unable to compare \"{target}\" with \"{source}\"!");
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79111577/c-sharp-string-extension-methods-with-same-name-based-on-syntax[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия