using System.ComponentModel.DataAnnotations;
public static void Main()
var child = new Child("p1", "p2");
var properties = child.GetType()
.GetProperties(BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance | BindingFlags.NonPublic);
var propertiesWithRequiredAttribute = properties
.Where(x => x.IsDefined(typeof(RequiredAttribute)));
JsonSerializer.Serialize(properties.Select(x => x.Name))
JsonSerializer.Serialize(propertiesWithRequiredAttribute.Select(x => x.Name))
public abstract class Parent
protected string Property1 { get; set; }
public class Child : Parent
public string Property2 { get; set; }
public Child(string name1, string name2)