假设我有一些随机的.cs文件,其中包含一个具有各种属性和方法的类。
如何迭代所有这些公共字符串属性的名称(作为字符串)?
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)
{
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"} ?
}
}
答案 0 :(得分:9)
private string[] GetPublicStringProperties()
{
return this.GetType()
.GetProperties(BindingFlags.Public | BindingFlags.Instance)
.Where(pi => pi.PropertyType == typeof(string))
.Select(pi => pi.Name)
.ToArray();
}
答案 1 :(得分:4)
您可以使用GetProperties
的Type
方法:
GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
这将为您提供一组PropertyInfo
个对象,每个属性对应一个。
您可以通过检查:
来检查该属性是string
属性
property.PropertyType == typeof(string)
要获取属性的名称,请使用property.Name
。
答案 2 :(得分:1)
var publicStringProperties =
from property in GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance)
where property.PropertyType == typeof(string)
select property.Name;