В Swashbuckle есть параметр OrderActionGroupsBy, который должен изменить порядок в API, но ничего из того, что я делаю, не работает, и я не могу определить, является ли это проблемой Swashbuckle или из-за моего IComparer. я делаю неправильно?
Это установка конфигураций
config.EnableSwagger(c =>
{
...
c.OrderActionGroupsBy(new CustomStringComparer());
c.GroupActionsBy(apiDesc => GroupBy(apiDesc));
...
}
Это группирует действия по типу, а не по имени контроллера.
private static string GroupBy(ApiDescription apiDesc)
{
var controllerName = apiDesc.ActionDescriptor.ControllerDescriptor.ControllerName;
var path = apiDesc.RelativePath;
if (controllerName.Contains("Original"))
{
controllerName = controllerName.Replace("Original", "");
}
// Check if it is one of the entities if so group by that
// Otherwise group by controller
var entities = new List<string>() { "Users", "Apps", "Groups" };
var e = entities.Where(x => attr.Contains(x.ToLower())).FirstOrDefault();
if (e != null)
{
return e;
}
return controllerName;
}
Это моя попытка IComparer. Я хочу сначала пользователей, а затем после этого алфавитного
class CustomStringComparer : IComparer<string>
{
public int Compare(string x, string y)
{
if (x.CompareTo(y) == 0)
return 0;
if (x.CompareTo("Users") == 0)
return -1;
if (y.CompareTo("Users") == 0)
return 1;
return x.CompareTo(y);
}
}
}
Это не работает, по умолчанию всегда используется алфавитный порядок, независимо от того, что я делаю.