使用Reflection获取PropertyInfo,只想查看具有mutator的访问器

时间:2012-01-15 06:24:18

标签: c# system.reflection

使用反射我想只检索同时具有getset方法的属性,并忽略只有get的属性。我要做的是为用户提供他/她能够更改的变量列表,因此向他们显示只有get方法的属性会产生误导。

根据以下代码,用户只会显示Name。或者我可能会同时显示它们,但是灰显UniqueID所以他们知道它们无法改变它。

public Int64 UniqueID
{
    get { return this.uniqueID; }
}

public String Name
{
    get { return this.name; }
    set { this.name = value; }
}

背景信息:我正在使用C#4.0。

2 个答案:

答案 0 :(得分:4)

您可以使用CanReadCanWrite属性:

Type type = ...
var readWriteProps = type.GetProperties()
                         .Where(p => p.CanRead && p.CanWrite); 

请注意,上述查询仅查找具有公共访问者的公共属性。

答案 1 :(得分:3)

我认为您正在寻找的属性是PropertyInfo.CanWrite,这可以通过以下方式实现,以检查Get和Set,例如:

if (propInfo.CanWrite && propInfo.CanRead)