Игнорировать свойство из Swagger UI - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь игнорировать свойство в пользовательском интерфейсе чванства. на основе этой статьи я реализовал фильтр и попробовал

[AttributeUsage(AttributeTargets.Property, AllowMultiple = true)]
public class SwaggerExcludeAttribute : Attribute
{
}

public class SwaggerExcludeFilter : ISchemaFilter
{
    public void Apply(OpenApiSchema schema, SchemaFilterContext context)
    {
        if (schema?.Properties == null || context == null) return;
        var excludedProperties = context.Type.GetProperties()
            .Where(t => t.GetCustomAttribute(typeof(SwaggerExcludeAttribute), true) != null);
        foreach (var excludedProperty in excludedProperties)
        {
            if (schema.Properties.ContainsKey(excludedProperty.Name))
                schema.Properties.Remove(excludedProperty.Name);
        }
    }
}
  1. пользовательский атрибут, кажется, неправильно получает отражение excludedProperties всегда пустым.
  2. context.MemberInfo читает свойство, но не может удалить его из schema.Properties, потому что там нет свойств

моя модель образца похожа на

public class SequenceSetupListModel
{
    public int Id { get; set; }
    public int Sequence { get; set; }
    public string Role { get; set; }
    public string User { get; set; }
    [SwaggerExclude]
    public IList<Sequence> SequenceLists { get; set; }
}

Чего мне здесь не хватает

Привет

1 Ответ

2 голосов
/ 24 марта 2020

На самом деле вам не нужно определять собственный атрибут для моделей запросов. Если вы используете Json. NET, тогда используйте [JsonIgnore]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...