TypeDescriptor.GetProperties vs. Type.GetProperties

本文关键字:GetProperties Type vs TypeDescriptor | 更新日期: 2023-09-27 18:09:56

我正在查看MSDN作者在同一类的不同方法中使用以下代码:

if ( TypeDescriptor.GetProperties(ModelInstance)[propertyName] != null ) return;
var property = ModelInstance.GetType().GetProperty(propertyName);

你会使用前者,因为它更快,你只需要查询一个属性,后者,如果你需要操作它?别的吗?

TypeDescriptor.GetProperties vs. Type.GetProperties

第一个方法通常不会更快,因为在内部默认情况下它实际上使用第二个方法。TypeDescriptor体系结构在正常反射(instance.GetType().GetProperty(...)表示)的基础上添加了功能。有关TypeDescriptor体系结构的更多信息,请参见http://msdn.microsoft.com/en-us/library/ms171819.aspx。

一般来说,直接使用反射更快(即上面的第二行),但如果使用某些自定义类型提供程序可能返回其他结果而不是标准反射,则可能有使用TypeDescriptor的原因。