Схема JSON.Net обязательные свойства - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть свойство в интерфейсе, который реализован несколькими классами.В некоторых из этих классов свойство требуется в схеме JSON.В других это не так.Какой самый простой способ, используя Newtonsoft.Json.Schema, включать свойство по мере необходимости только там, где оно требуется?

Вот что-то, что не работает, хотя я ожидаю, что это:

[JsonObject( MemberSerialization.OptOut )]
public interface IFace
{
    string Prop
    {
        get;
        set;
    }
} 

public class IFace_impl : IFace
{
    [JsonProperty( Required = Required.Always )]
    public string Prop
    {
        get;
        set;
    }
}

Когда генерируется схема JSON для IFace_impl, Prop не включается в список обязательных, несмотря на разметку.

Вот кое-что, что работает, но раздражает:

[JsonObject( MemberSerialization.OptOut )]
public interface SubIFace : IFace
{
    [JsonProperty( Required = Required.Always )]
    new string Prop
    {
        get;
        set;
    }
} 

public class IFace_impl : SubIFace
{
    public string Prop
    {
        get;
        set;
    }
}

Теперь, когда схема создается для IFace_impl, Prop включается в массив обязательных свойств.

Конечно, есть лучший способ сделать это.Есть предложения?

...