我在与 System.CodeDOM
一起工作的公共(public) API 的程序集上使用反射来生成一些代码,这些代码将通过 API 提取信息。
在我自动生成的代码的一部分中,我引用了 API 程序集中的许多类型属性的值。但是,我总是以对我生成的代码中实际上不存在的属性的引用结束。我使用了 Type.GetProperties()
,据我所知,它应该只返回公共(public)属性。
我进一步调查后发现,当我缺少一个名为 SampleProperty
的属性时,类中有两个方法名为 get_SampleProperty
和 set_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/