使用Reflection获取PropertyInfo,只希望看到具有赋值函数的访问器
本文关键字:赋值 函数 访问 获取 Reflection PropertyInfo 希望 使用 | 更新日期: 2023-09-27 18:20:31
使用反射,我只想检索同时具有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。
您可以使用CanRead
和CanWrite
属性:
Type type = ...
var readWriteProps = type.GetProperties()
.Where(p => p.CanRead && p.CanWrite);
请注意,上面的查询只查找具有公共访问器的公共属性。
我认为您要查找的属性是PropertyInfo.CanWrite
,这可以通过以下方式实现,以使用以下内容检查Get和Set:
if (propInfo.CanWrite && propInfo.CanRead)