get_PropertyName()/ set_PropertyName()vs PropertyName?

Eri*_*tas 1 .net c# propertyinfo system.reflection

我正在使用反射来组装我正在使用的公共API,System.CodeDOM以生成一些将通过API提取信息的代码.

在我自动生成的代码的一部分中,我引用了API程序集中许多类型属性的值.但是,我最后会继续引用我生成的代码中不存在的属性.Type.GetProperties()根据我的理解,我使用的只能归还公共财产.

我进一步调查了一下,发现当我有一个丢失的属性时,称之为调用类中SampleProperty有两个方法get_SampleProperty,set_SampleProperty但没有实际SampleProperty属性.

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

Han*_*ant 5

我使用了PropertyInfo.GetProperties(),根据我的理解,它应该只返回公共属性.

这可能是您的第一次挂断,PropertyInfo类没有GetProperties方法.Type类的确如此.您的问题另有说明您实际上正在使用Type.GetMethods().是的,它返回属性的get_Blah和set_Blah属性访问器方法.在引擎盖下,属性实际上是作为方法实现的.

使用Type.GetProperties()来反映属性.