Ich benutze Swashbuckle, um swagger Dokumentation \ UI für ein Webapi2-Projekt zu generieren. Unsere Modelle werden mit einigen Legacy-Interfaces geteilt, daher gibt es einige Eigenschaften, die ich bei den Modellen ignorieren möchte. Ich kann das JsonIgnore-Attribut nicht verwenden, da die Legacy-Schnittstellen auch zu JSON serialisiert werden müssen, damit ich die Eigenschaften nicht global in der Swashbuckle-Konfiguration ignorieren möchte.So konfigurieren Sie Swashbuckle, um Eigenschaft auf Modell zu ignorieren
fand ich eine Methode, dies hier dokumentiert tun:
https://github.com/domaindrivendev/Swashbuckle/issues/73
Aber dies scheint mit dem aktuellen Swashbuckle Release veraltet zu sein.
Das Verfahren für die alte Version von Swashbuckle empfohlen wird unter Verwendung einer IModelFilter Implementierung wie folgt:
public class OmitIgnoredProperties : IModelFilter
{
public void Apply(DataType model, DataTypeRegistry dataTypeRegistry, Type type)
{
var ignoredProperties = // use reflection to find any properties on type decorated with the ignore attributes
foreach (var prop in ignoredProperties)
{
model.Properties.Remove(prop.Name);
}
}
}
SwaggerSpecConfig.Customize(c => c.ModelFilter<OmitIgnoredProperties>());
Aber ich bin nicht sicher, wie Swashbuckle zu konfigurieren, dass die IModelFilter in der aktuellen Version zu benutzen? Ich benutze Swashbuckle 5.5.3.
können Sie verwende eigentlich JsonIgno Re Property, die nicht die Eigenschaft in der Swagger –
Wie in der Frage erwähnt, ich möchte nicht JsonIgnore verwenden, wie ich Legacy-Code, der auch die Modelle verwenden muss, und wenn ich JsonIgnore, die Auswirkungen beeinflussen wird beeinflussen und die Legacy-Code ... – mutex