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

if ( TypeDescriptor.GetProperties(ModelInstance)[propertyName] != null ) return;

var property = ModelInstance.GetType().GetProperty(propertyName);

您会使用前者,因为它的速度更快,而您只需要查询属性,而后者则需要查询它吗?还有别的吗

最佳答案

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

通常,直接使用反射会更快(即上面的第二行),但是如果正在使用某些自定义类型提供程序可能会返回标准反射以外的其他结果,则可能有使用 TypeDescriptor 的原因。

10-06 05:30