Методы расширения строки C# с тем же именем на основе синтаксисаC#

Место общения программистов C#
Ответить
Anonymous
 Методы расширения строки C# с тем же именем на основе синтаксиса

Сообщение Anonymous »

Я хотел бы сравнить две строки с синтаксисом ^([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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»