Я использовал расширение ToRanges и Stringify из (https://codereview.stackexchange.com/a/187442/220021) для экспериментов. Когда я использую их в консольном приложении, они работают как положено.
Но когда я добавил их в приложение MVC (то же самое. net 4.7.2 framework), я теперь не могу даже построить (ошибки компиляции) решение. Но я не получаю никаких ошибок в списке ошибок.
..... -> полный путь (я удалил это)
1>------ Build started: Project: App, Configuration: Debug Any CPU ------
1>....\StringExtensions.cs(16,35,16,36): error CS1031: Type expected
1>....\StringExtensions.cs(16,35,16,36): error CS1003: Syntax error, '>' expected
1>....\StringExtensions.cs(16,35,16,36): error CS1519: Invalid token '(' in class, struct, or interface member declaration
1>....\StringExtensions.cs(16,45,16,48): error CS1001: Identifier expected
1>....\StringExtensions.cs(16,45,16,48): error CS1002: ; expected
1>....\StringExtensions.cs(16,52,16,53): error CS1003: Syntax error, ',' expected
1>....\StringExtensions.cs(16,55,16,63): error CS1002: ; expected
1>....\StringExtensions.cs(16,55,16,63): error CS1520: Method must have a return type
1>....\StringExtensions.cs(18,19,18,22): error CS1003: Syntax error, '(' expected
1>....\StringExtensions.cs(18,49,18,50): error CS1026: ) expected
etc etc
Вот как добавлен код
using System.Collections.Generic;
using System.Linq;
namespace App.App_Code_classes
{
public static class StringExtensions
{
//source https://codereview.stackexchange.com/a/187442
public static IEnumerable<(int Min, int Max)> ToRanges(this IEnumerable<int> source)
{
using (var e = source.GetEnumerator())
{
if (!e.MoveNext())
{
yield break;
}
var previous = e.Current;
var range = (Min: previous, Max: e.Current);
while (e.MoveNext())
{
var isConsecutive = e.Current - previous == 1;
if (isConsecutive)
{
range = (range.Min, e.Current);
}
else
{
yield return range;
range = (e.Current, e.Current);
}
previous = e.Current;
}
yield return range;
}
}
//source https://codereview.stackexchange.com/a/187442
public static string Stringify(this IEnumerable<(int Min, int Max)> ranges)
{
var values = ranges.Select(range => $"{(IsEmpty(range) ? $"{range.Min}" : $"{range.Min}-{range.Max}")}");
return string.Join(", ", values);
bool IsEmpty((int Min, int Max) range)
{
return range.Max - range.Min == 0;
}
}
}
}
Я использую другие расширения в приложении MVC, и они работают как положено, я что-то упустил? Или как я могу справиться с этим?