How to iterate all “public string” properties in a .net class

后端 未结 3 982
暖寄归人
暖寄归人 2020-12-21 02:15

Lets say I have some random .cs file containing a class with some properties and methods of all sorts.

How can I iterate the names (as strings) of all these public s

相关标签:
3条回答
  • 2020-12-21 03:06
    private string[] GetPublicStringProperties()
    {
        return this.GetType()
            .GetProperties(BindingFlags.Public | BindingFlags.Instance)
            .Where(pi => pi.PropertyType == typeof(string))
            .Select(pi => pi.Name)
            .ToArray();
    }
    
    0 讨论(0)
  • 2020-12-21 03:07

    You can use the GetProperties method of Type:

    GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
    

    This will give you an array of PropertyInfo objects, one for each property.

    You can check the property is a string property by checking that:

    property.PropertyType == typeof(string)
    

    To get the names of the properties use property.Name.

    0 讨论(0)
  • 2020-12-21 03:08
    var publicStringProperties = 
        from property in GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance)
        where property.PropertyType == typeof(string)
        select property.Name;
    
    0 讨论(0)
提交回复
热议问题