Как сделать так, чтобы члены с обязательным ключевым словом (C# 11) были обязательными в схемах JSON, созданных построитC#

Место общения программистов C#
Ответить
Anonymous
 Как сделать так, чтобы члены с обязательным ключевым словом (C# 11) были обязательными в схемах JSON, созданных построит

Сообщение Anonymous »

Я изучал использование функции обязательных членов C# 11 в сочетании с генерацией схемы JSON. В частности, я использую класс JsonSchemaBuilder (из библиотеки JsonEverything) для создания схем JSON, и мне интересно, существуют ли какие-либо планы или сроки поддержки функции обязательных членов C# 11.
На данный момент ключевое слово require в C# 11 гарантирует, что определенные свойства должны быть инициализированы. Я надеюсь, что эту концепцию можно будет интегрировать в JsonSchemaBuilder, чтобы сгенерированная схема автоматически отражала эти требования (например, путем добавления свойств в обязательный список схемы).
Я просмотрел проблемы и обсуждения GitHub для JsonEverything, но не нашел никаких упоминаний об этом. Существует ли рекомендуемый обходной путь или подход для достижения такого поведения прямо сейчас?
Будем очень признательны за любую информацию или подсказки.
Я экспериментировал с маркировка свойств класса, как это требуется в C# 11, а затем создание схем JSON с помощью JsonSchemaBuilder. Я ожидал, что свойства, помеченные как обязательные, автоматически появятся в требуемом массиве схемы. Однако, похоже, это происходит не сразу.
Чего мы хотим:
public class A
{
public required string Name { Get; Set;}
}

Вместо:
public class A
{
[Required]
public required string Name { Get; Set;}
}

Чтобы иметь это свойство в соответствии с требованиями в схеме Json
PD: Этот вопрос является новым и отличается от C# 11 — обнаружение требуемого свойства путем отражения, потому что в настоящее время есть способ узнать, требуется ли это свойство, например:
using System;
using System.Reflection;
using System.Runtime.CompilerServices;

public class Example
{
public required string RequiredProperty { get; set; }
}

public class Program
{
public static void Main()
{
var prop = typeof(Example).GetProperty("RequiredProperty");
bool isRequired = prop.IsDefined(typeof(RequiredMemberAttribute));
Console.WriteLine(isRequired); // Imprimirá "True"
}
}

Как мы создаем JsonSchema:
var schema = new JsonSchemaBuilder()
.Schema("http://json-schema.org/draft-07/schema#")
.Title({title})
.Description({description})
.FromType(type)
.Build();


Подробнее здесь: https://stackoverflow.com/questions/792 ... son-schema
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»