get libpertource源代码5.0中的MapBuilder.cs中的getproperty和getproperties

时间:2013-05-22 09:11:25

标签: reflection enterprise-library getproperties

我在ent lib 5.0中阅读了MapBuilder.cs源代码;

某些代码对我来说似乎很奇怪,我只是想知道这样做的目的是什么:

public static IMapBuilderContext<TResult> MapAllProperties()
{
   IMapBuilderContext<TResult> context = new MapBuilderContext();
   var properties =
            from property in typeof(TResult).GetProperties(BindingFlags.Instance | BindingFlags.Public)
            where IsAutoMappableProperty(property)
            select property;
   foreach (var property in properties)
   {
       context = context.MapByName(property);
   }
   return context;
}

在MapAllProperties()中,我们使用Type.GetProperties()获取属性,然后,在MapByName()中,我们使用名为NormalizePropertyInfo()的方法来获取“另一个”属性。我的意思是再次调用Type.GetProperty()!!!:

private static PropertyInfo NormalizePropertyInfo(PropertyInfo property)
{
    if (property == null) throw new ArgumentNullException("property");
    return typeof(TResult).GetProperty(property.Name);
}

为什么需要再次调用GetProperty()? NormalizePropertyInfo()的目的是什么?

任何帮助都将不胜感激,谢谢。

0 个答案:

没有答案