c# - get_PropertyName()/set_PropertyName() 与 PropertyName?

标签 c# .net system.reflection propertyinfo

我在与 System.CodeDOM 一起工作的公共(public) API 的程序集上使用反射来生成一些代码,这些代码将通过 API 提取信息。

在我自动生成的代码的一部分中,我引用了 API 程序集中的许多类型属性的值。但是,我总是以对我生成的代码中实际上不存在的属性的引用结束。我使用了 Type.GetProperties(),据我所知,它应该只返回公共(public)属性。

我进一步调查后发现,当我缺少一个名为 SampleProperty 的属性时,类中有两个方法名为 get_SamplePropertyset_SampleProperty 但没有实际的 SampleProperty 属性。

这是怎么回事?为什么 intellisense 将这些方法视为单独的方法,但当通过反射返回时它们显示为属性?

最佳答案

I used PropertyInfo.GetProperties() which from what I understand should only return public properties.

这可能是您遇到的第一个问题,PropertyInfo 类没有 GetProperties 方法。 Type 类可以。您的问题否则表明您实际上正在使用 Type.GetMethods()。是的,它返回属性的 get_Blah 和 set_Blah 属性访问器方法。在幕后,属性实际上是作为方法实现的。

使用 Type.GetProperties() 来反射(reflect)属性。

关于c# - get_PropertyName()/set_PropertyName() 与 PropertyName?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4341736/

相关文章:

c# - DateTime 天结束 24 :00 (midnight)

c# - 使用 System.Reflection 检索 const 字符串字段的列表

c# - 手动设置 Lazy<T> 的值

c# - 由于事先不知道长度,因此如何录制到Stream中?

c# - 无法提取 .zip 文件。获取无效数据异常

.net - 字符串不等于字符串?

c# - Parallel.Foreach 被卡住,但服务继续响应

c# - 尝试调用方法时出错

c# - TypeBuilder 中缺少 CreateType。如何移植这个?

c# - 如何将FTP文件移动到C#中的另一个目录?