How to iterate all "public string" properties in a .net class
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 string properties?
Example.cs:
Public class Example
{
public string FieldA {get;set;}
public string FieldB {get;set;}
private string Message1 {get;set;}
public int someInt {get;set;}
public void Button1_Click(object sender, EventArgs e)
开发者_StackOverflow {
Message1 = "Fields: ";
ForEach(string propertyName in this.GetPublicStringProperties())
{
Message1 += propertyName + ",";
}
// Message1 = "Fields: Field1,Field2"
}
private string[] GetPublicStringProperties()
{
//What do we put here to return {"Field1", "Field2"} ?
}
}
private string[] GetPublicStringProperties()
{
return this.GetType()
.GetProperties(BindingFlags.Public | BindingFlags.Instance)
.Where(pi => pi.PropertyType == typeof(string))
.Select(pi => pi.Name)
.ToArray();
}
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
.
var publicStringProperties =
from property in GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance)
where property.PropertyType == typeof(string)
select property.Name;
精彩评论