PropertyInfo 上的 GetSetMethod 和 SetMethod 之间有什么区别?

Luk*_*vat 2 c# reflection

因此,PropertyInfo 有一个 GetSetMethod 方法,该方法返回该属性的 setter 方法。它还有一个 SetMethod 属性,可以执行相同的操作(据我所知)。

我问这个问题是因为如果该属性不是公共的,而 SetMethod 仍然有效,则 GetSetMethod 似乎会返回 null。

我在 MSDN 上找不到太多内容。

das*_*ght 5

它们做同样的事情,但该属性是新添加的:已在 .NET 4.5 中添加,而GetSetMethod自 .NET 2.0 以来就已存在。

唯一的区别是,即使属性是非公开的,属性也会返回 setter,而方法只会返回一个public。从文档中:

返回此属性的公共集访问器。[方法文档]

获取此属性的设置访问器。[财产文件]