Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用反射获取PropertyInfo,只想看到具有mutator的访问器_C#_System.reflection - Fatal编程技术网

C# 使用反射获取PropertyInfo,只想看到具有mutator的访问器

C# 使用反射获取PropertyInfo,只想看到具有mutator的访问器,c#,system.reflection,C#,System.reflection,使用反射,我只想检索同时具有get和set方法的属性,而忽略仅具有get方法的属性。我想做的是给用户一个他/她可以更改的变量列表,因此向他们显示只有get方法的属性是误导性的 给定下面的代码,用户将只显示Name。或者我可以同时给他们看,但是灰色的UniqueID,这样他们就知道他们无法更改它 public Int64 UniqueID { get { return this.uniqueID; } } public String Name { get { return thi

使用反射,我只想检索同时具有
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)

这很好用,谢谢。我会投你一票,但我没有足够的代表权这么做。