2010-12-03 53 views
1

我正在使用关于公共API的程序集的反思,我正在与System.CodeDOM一起使用来生成一些代码,这些代码将通过API提取信息。get_PropertyName()/ set_PropertyName()vs PropertyName?

在我的自动生成代码的一部分中,我引用了API程序集中多个类型属性的值。但是,我一直在引用在我生成的代码中并不存在的属性。我使用Type.GetProperties(),据我了解应该只返回公共属性。

我看着它进一步发现,当我有一个丢失的财产,说叫SampleProperty有在类,而不是两个方法称为get_SamplePropertyset_SampleProperty但没有实际SampleProperty财产。

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

+0

我想我需要[SSCCE](http://pscode.org/sscce.html)才能提供帮助。 – 2010-12-03 01:51:33

回答

5

我用PropertyInfo.GetProperties(),据我所知,应该只返回公共属性。

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

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

+0

+1当你的答案出现时,写得完全相同。 =) – 2010-12-03 02:10:19

相关问题