使用反射我想只检索同时具有get
和set
方法的属性,并忽略只有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。
答案 0 :(得分:4)
您可以使用CanRead
和CanWrite
属性:
Type type = ...
var readWriteProps = type.GetProperties()
.Where(p => p.CanRead && p.CanWrite);
请注意,上述查询仅查找具有公共访问者的公共属性。
答案 1 :(得分:3)
我认为您正在寻找的属性是PropertyInfo.CanWrite
,这可以通过以下方式实现,以检查Get和Set,例如:
if (propInfo.CanWrite && propInfo.CanRead)