获取嵌套在 Wrapper class C# 中的所有字符串属性

Get ALL string properties nested within Wrapper class C#

我一直在用头撞墙试图找出如何动态遍历 object 层次结构以查找 parent class 下的所有字符串属性并执行替换那些字符串。

假设我有一个具有某些属性的 parent "wrapper" class。像这样

public class ParentWrapper
{
    public Person Mom { get; set; }
    public Person Dad { get; set; }
    public IEnumerable<Person> Children { get; set; }
    public Person FavoritePerson { get; set; }
    public string FamilyName { get; set; }
}

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

我希望能够动态地使用反射来查找 ParentWrapper 或任何其他 object 内的所有字符串属性。我想找到 parent class 中的字符串 属性 "FamilyName",但我还想找到嵌套 class 中的所有字符串值es。我想找到每个人的 FirstName 和 LastName 的所有字符串,以及嵌套在 child classes 中的 objects 内的任何字符串。

.GetType().GetProperties().Where(prop => prop.PropertyType == typeof(string))

这将使我获得 ParentWrapper class 中的所有字符串属性,但我希望能够动态向下钻取到所有不同级别。

希望我的请求有意义。

我现在无法检查它,但我认为你可以在这里做一些递归的事情,比如:

private static void ReadPropertiesRecursive(Type type)
    {
        foreach (PropertyInfo property in type.GetProperties())
        {
            if (property.PropertyType == typeof(string))
            {
                var FamilyName = property.GetValue(property))// something like this
                //do what u want with searched values
            }
            if (property.PropertyType.IsClass)
            {
                ReadPropertiesRecursive(property.PropertyType);
            }
        }
    }