2010-12-03 37 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

相關問題