1

我正在使用对我正在使用的公共 API 程序集的反射System.CodeDOM来生成一些代码,这些代码将通过 API 提取信息。

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

我进一步研究它,发现当我有一个缺少的属性时,比如说调用SampleProperty,类中有两个方法被调用get_SamplePropertyset_SampleProperty但没有实际SampleProperty属性。

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

4

1 回答 1

5

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

That might be your first hang-up, the PropertyInfo class doesn't have a GetProperties method. The Type class does. Your question otherwise indicates that you are actually using Type.GetMethods(). Yes, that returns the get_Blah and set_Blah property accessor methods for a property. Under the hood, properties are actually implemented as methods.

Use Type.GetProperties() to reflect properties.

于 2010-12-03T02:04:34.293 回答